0

我是objective-c的新手。

我有 2 个不相关的问题。

  • 创建实例变量或属性时必须经过哪些过程?比如我一般在interface部分定义变量,然后给它创建一个属性,然后合成,然后在viewUnload部分设置为nil。

即使我为它创建了一个属性,我是否必须在接口部分定义变量?何时必须在 viewUnload 部分将变量设置为 nil?

  • 定义属性时,强、弱、非原子、原子、分配等有什么区别?我什么时候应该强,弱,非原子,原子,分配等?
4

1 回答 1

0

创建实例变量或属性时必须经过哪些过程?

合成一个属性是声明它的ivar,并定义访问器方法,而不是分配和初始化它。您需要在适当的时间点对其进行初始化(通常在对象实例的初始化过程中,-init*或者在视图即将显示之前,例如在 中-viewDidLoad)。

定义属性时,强、弱、非原子、原子、分配等有什么区别?我什么时候应该强,弱,非原子,原子,分配等?

strong、weak、assign 是改变对象实例引用方式的修饰符。请参阅自动引用计数的文档。(维基百科Apple 的文档

非原子和原子是改变访问器合成方式的修饰符。请参阅this的声明属性部分。

即使我为它创建了一个属性,我是否必须在接口部分定义变量?

不。就目前而言,您不需要这样做,因为最新 SDK 中的编译器会为您完成这些工作。例如,如果您声明了一个属性:@property (strong, nonatomic) NSData *data1;,那么您将NSData *_data1免费获得 ivar,即使您省略了 @synthesize 语句。

何时必须在 viewUnload 部分将变量设置为 nil?

不,顺便说一句,-viewDidUnload在 iOS 6.0 中已弃用。

于 2013-01-23T03:16:12.297 回答