我已在本网站上阅读了有关此问题的许多问题,我了解以下内容:
self.property 访问手动或@synthesize 创建的getter/setter 方法。根据是否将属性声明为保留、复制等,保留计数被正确修改,例如保留属性,释放先前的值,并使用“保留”将新值分配给新值,并将保留计数增加 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;
这些属性中的每一个都具有关联的同名私有实例变量。所有都以相同的方式声明为“非原子,保留”属性。每个都在 dealloc 中释放...
然而,“成分”是通过 self 访问的,而“prepTimeTextField”是直接访问的。
访问方法不同的原因是什么?
如果我正在访问视图的委托怎么办?或者是一个核心数据对象,它作为保留属性由之前的视图控制器传递给视图控制器?
非常感谢