gpt4 book ai didi

objective-c - 何时使用 'self' 访问属性

转载 作者:太空狗 更新时间:2023-10-30 03:38:18 24 4
gpt4 key购买 nike

我已经阅读了本网站上有关此问题的一些问题,我了解以下内容:

self.property 访问手动或@synthesize 创建的getter/setter 方法。根据属性是否被声明为保留、复制等,保留计数被正确修改,例如保留属性,释放先前的值分配给新值 'retain' 并将保留计数增加 1。

属性通常使用同名的实例变量声明(如果您手动分配,可以不同)。这一般是因为@synthesize 生成的访问器使用实例变量来引用内存中的对象,然后执行相关命令。

我的问题基于这样一个事实,即在许多示例中,self.property 和 property 可互换用于不同的事物,我在确定规则时遇到了麻烦。 Apple Docs 中“食谱”示例应用程序中的一个示例具有以下内容:

self.navigationItem.title = recipe.name;
nameTextField.text = recipe.name;
overviewTextField.text = recipe.overview;
prepTimeTextField.text = recipe.prepTime;

和...

self.ingredients = sortedIngredients;

这些属性中的每一个都具有关联的同名私有(private)实例变量。所有都以相同的方式声明为“非原子,保留”属性。每个都在dealloc中释放...

然而,'ingredients' 是通过 self 访问的,而 'prepTimeTextField' 是直接访问的。

访问方式不同的原因是什么?

如果我正在访问 View 的委托(delegate)怎么办?还是一个核心数据对象,它作为保留属性由以前的 View Controller 传递给 View Controller ?

非常感谢

最佳答案

您几乎总是希望使用合成的 setter/getter 来访问变量,即使此时您没有对它们做任何特殊的事情。

如果随着应用程序的开发,您发现需要对变量进行进一步的验证/格式化,那么您可以只实现所需的 setter/getter 方法,如果您使用了合成方法,则会调用此代码。

这通常是一个需要养成的好习惯。

关于objective-c - 何时使用 'self' 访问属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4271657/

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