ios - @property 和 Objective-C 中弱属性的使用

标签 ios objective-c uiviewcontroller automatic-ref-counting

我有一个具体的问题,但找不到答案。

我有一个包含一些观点的 Storyboard。有些观点有出路。 我知道我必须将我的 socket 声明为弱参数,但是我不知道我是否必须声明 getter 和 setter(使用 @property 和 synthesize)。

1 - __weak IBOutlet UITableView *table;
2 - @property(nonatomic, weak) UITableView *table; 

如果我只是声明 (1),我就可以在 View Controller 上做“表格”。

如果我声明 (1) 和 (2) 我可以做 self.table。

有什么区别?什么是最好的方法?

最佳答案

(1) 是实例变量声明。 (2) 是属性定义。如果您合成该属性,或使用自动合成,在这种情况下也会创建一个实例变量。通常,除非你想在公共(public) API 中暴露 View 或者为了多态性,声明一个实例变量就足够了。

还有一些其他特定情况可能会优先使用属性。例如,如果您想在 block 中引用 View 但不希望保留 self,则使用 weakSelf 范例可以更轻松地访问属性。但是您也可以创建对 View 的弱引用,所以这是没有实际意义的。

访问实例变量不是使用点 (.) 表示法,而是直接使用或较少使用的箭头 (->) 表示法。

所以要么:

[_tableView reloadData];

[self->_tableView reloadData];

请记住,在 nil 引用上使用 -> 会导致错误访问。

关于ios - @property 和 Objective-C 中弱属性的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21649723/

相关文章:

ios - 以编程方式生成有序颜色

ios - 注释、注释、注释

ios - 将iOS应用崩溃报告从库发送到服务器

ios - 展开然后继续搜索,而不显示中间 View Controller

iphone - viewDidLoad 在启动时在 rootViewController 上被调用两次

ios - 重构大型方法以在 UIViewController 中创建自定义 UIView

ios - 如何将元组字典保存和读取到 NSUserDefaults?

ios - Metal iOS 给出编译错误

iPhone objective-c wifi 点列表

objective-c - 如何创建具有每周范围(超过 5 年)的 NSDate 的查找表