分配vs任何东西等Viewunload viewload等

时间:2013-01-23 02:51:47

标签: objective-c

我是Objective-c的新手。

我有两个无关的问题。

  • 创建实例变量或属性时必须完成的过程是什么?例如,我通常在接口部分定义变量,然后为它创建一个属性,然后合成它,然后在viewUnload部分中将其设置为nil。

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

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

1 个答案:

答案 0 :(得分:0)

  

创建时需要完成的过程是什么   实例变量或属性?

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

  

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

强弱,赋值是修饰符,可以改变对象实例的引用方式。请参阅自动参考计数的文档。(WikipediaApple's Documents

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

  

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

没有。至于现在,您不需要,因为最新SDK中的编译器会为您执行这些操作。例如,如果您声明了一个属性:@property (strong, nonatomic) NSData *data1;,那么即使您省略了@synthesize语句,也可以免费获得ivar NSData *_data1

  

我什么时候必须在viewUnload部分中将变量设置为nil?

没有。 BTW,{6.0}中不推荐使用-viewDidUnload