0

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

@property (nonatomic,retain) UIView *someUIView;

使用 ARC,我还需要使用retain还是可以只写这个?

@property (nonatomic) UIView *someUIView;
4

2 回答 2

2

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

引用LLVM ARC 文档

在没有所有权来源的情况下合成的可保留对象指针类型的属性具有其关联实例变量的所有权,如果它已经存在的话;否则,[从 Apple 3.1,LLVM 3.1 开始] 它的所有权隐含地很强。在此修订版之前,合成这样的属性是不正确的。

无论如何,我通常会发现自己键入“strong”,我认为因为assign以前是默认设置,所以每当我看到一个没有指定所有权的可保留对象属性时,它只会让我害怕一瞬间。

于 2012-06-21T01:39:37.260 回答
1

strong关键字已在 的位置上做广告,retain但它们实际上是一回事。所以你可以使用strongor retain

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

于 2012-06-21T00:54:27.543 回答