gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:01:38 25 4
gpt4 key购买 nike

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

我有一个包含一些观点的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com