在ARC之前,您可以将.h文件中的属性声明为:
@property (nonatomic,retain) UIView *someUIView;
使用ARC,我是否仍然需要使用retain
或者我可以写这个吗?
@property (nonatomic) UIView *someUIView;
答案 0 :(得分:2)
在LLVM 3.1及更高版本中,您可以执行任一操作,因为它们是相同的。在ARC下,strong
(与retain
相同)是可保留对象指针的默认值(如果未指定)。
引用LLVM ARC doc:
合成的可保留对象指针类型的属性 没有所有权来源的是其相关的所有权 实例变量,如果它已经存在;否则,[开始Apple 3.1,LLVM 3.1]其所有权隐含性强。在此次修订之前,合成这样的财产是不合理的。
我通常会发现自己输入“强大”,我认为因为assign
以前是默认值,所以每当我看到没有指定所有权的可保留对象属性时,它就会让我感到慌不已。
答案 1 :(得分:1)
strong
关键字已在retain
的位置做广告,但它们实际上是相同的。因此,您可以使用strong
或retain
。
您的视图需要至少保留一个对象。如果您的视图已被其他对象保留,则可以将其设为assign
(又称弱)属性。否则,您可以保留retain
或strong
关键字。