我已经阅读了该网站上关于此问题的若干个问题,我了解以下内容:
self.property 访问手动或@synthesie创建的getter/setter方法。根据属性是否声明为retain、copy等,将正确修改保留计数,例如保留属性使用'retain'将先前分配的值释放并将其新值引用次数增加1。
通常,属性与同名的实例变量(如果手动赋值可以不同)一起声明。这通常是因为@synthesize生成的访问器使用实例变量引用内存中的对象,然后执行相关命令。
我的问题基于这样一个事实,即在许多示例中,self.property和property可用于不同的东西,并且我难以确定规则。苹果文档中的“Recipes”示例应用程序中有一个示例,其中包含以下内容:
每个属性都有与之相关的同名私有实例变量。它们都使用“nonatomic,retain”属性以相同的方式声明。在dealloc中释放每个变量...
然而,“ingredients”是通过self访问的,“prepTimeTextField”是直接访问的。
访问方法不同的原因是什么?
如果我正在访问视图的代理呢?或者一个通过其前一个视图控制器作为保留属性传递给视图控制器的核心数据对象?
非常感谢。
self.property 访问手动或@synthesie创建的getter/setter方法。根据属性是否声明为retain、copy等,将正确修改保留计数,例如保留属性使用'retain'将先前分配的值释放并将其新值引用次数增加1。
通常,属性与同名的实例变量(如果手动赋值可以不同)一起声明。这通常是因为@synthesize生成的访问器使用实例变量引用内存中的对象,然后执行相关命令。
我的问题基于这样一个事实,即在许多示例中,self.property和property可用于不同的东西,并且我难以确定规则。苹果文档中的“Recipes”示例应用程序中有一个示例,其中包含以下内容:
self.navigationItem.title = recipe.name;
nameTextField.text = recipe.name;
overviewTextField.text = recipe.overview;
prepTimeTextField.text = recipe.prepTime;
并且...
self.ingredients = sortedIngredients;
每个属性都有与之相关的同名私有实例变量。它们都使用“nonatomic,retain”属性以相同的方式声明。在dealloc中释放每个变量...
然而,“ingredients”是通过self访问的,“prepTimeTextField”是直接访问的。
访问方法不同的原因是什么?
如果我正在访问视图的代理呢?或者一个通过其前一个视图控制器作为保留属性传递给视图控制器的核心数据对象?
非常感谢。