我已经阅读了该网站上有关此问题的许多问题,我的理解如下:
self.property 访问手动或通过 @synthesize 创建的 getter/setter 方法。根据属性是否被声明为保留、复制等,保留计数被正确修改,例如保留属性,释放先前的值并用“retain”分配新值,并将保留计数增加 1。
属性通常使用同名的实例变量来声明(如果手动进行赋值,则可能会有所不同)。这通常是因为@synthesize生成的访问器使用实例变量来引用内存中的对象,然后执行相关命令。
我的问题基于这样一个事实:在许多示例中, self.property 和 property 可互换用于不同的事物,并且我在确定规则时遇到困难。 Apple 文档中“食谱”示例应用程序中的一个示例具有以下内容:
self.navigationItem.title = recipe.name;
nameTextField.text = recipe.name;
overviewTextField.text = recipe.overview;
prepTimeTextField.text = recipe.prepTime;
and...
self.ingredients = sortedIngredients;
这些属性中的每一个都具有关联的同名私有实例变量。所有这些都以相同的方式使用“nonatomic,retain”属性进行声明。每个都在 dealloc 中释放...
然而,“ingredients”是通过 self 访问的,“prepTimeTextField”是直接访问的。
访问方式不同的原因是什么?
如果我正在访问视图的委托怎么办?或者是由之前的视图控制器作为保留属性传递给视图控制器的核心数据对象?
非常感谢
你几乎总是想使用合成的 setter/getter 来访问变量,即使你目前没有对它们做任何特殊的事情。
如果随着应用程序的开发,您发现需要对变量进行进一步的验证/格式化,那么您只需实现所需的 setter/getter 方法,并且如果您使用了合成方法,则会调用此代码。
这通常是一个值得养成的好习惯。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)