是否需要使用ARC的UIView属性的retain属性?

时间:2012-06-21 00:46:41

标签: objective-c automatic-ref-counting

在ARC之前,您可以将.h文件中的属性声明为:

@property (nonatomic,retain) UIView *someUIView;

使用ARC,我是否仍然需要使用retain或者我可以写这个吗?

@property (nonatomic) UIView *someUIView;

2 个答案:

答案 0 :(得分:2)

在LLVM 3.1及更高版本中,您可以执行任一操作,因为它们是相同的。在ARC下,strong(与retain相同)是可保留对象指针的默认值(如果未指定)。

引用LLVM ARC doc

  

合成的可保留对象指针类型的属性   没有所有权来源的是其相关的所有权   实例变量,如果它已经存在;否则,[开始Apple   3.1,LLVM 3.1]其所有权隐含性强。在此次修订之前,合成这样的财产是不合理的。

我通常会发现自己输入“强大”,我认为因为assign以前是默认值,所以每当我看到没有指定所有权的可保留对象属性时,它就会让我感到慌不已。

答案 1 :(得分:1)

strong关键字已在retain的位置做广告,但它们实际上是相同的。因此,您可以使用strongretain

您的视图需要至少保留一个对象。如果您的视图已被其他对象保留,则可以将其设为assign(又称弱)属性。否则,您可以保留retainstrong关键字。