什么是强属性属性

时间:2011-07-14 23:09:17

标签: iphone objective-c ios cocoa macos

我正在为开发人员使用Xcode测试版,并注意到一些微妙的差异。其中包括声明属性的新属性。

@property(strong)IBOutlet NSArrayController *arrayControl;

我的问题是:强属性是什么意思?它会取代一些旧的,还是全新的?我搜索了谷歌和开发人员的文档,但没有找到任何东西。直到我知道它是什么,我对使用它犹豫不决。

提前致谢

3 个答案:

答案 0 :(得分:95)

它是retain属性的替代品,是Objective-C Automated Reference Counting (ARC)的一部分。在非ARC代码中,它只是retain的同义词。

答案 1 :(得分:10)

强引用是对一个对象的引用,该对象阻止它被释放。换句话说,它创建了所有者关系。以前你会这样做:

**// Non-ARC Compliant Declaration
@property(retain) NSObject *obj;**

在ARC下,我们执行以下操作以确保类实例将所有权权益作为引用对象(即,在所有者出现之前无法取消分配)。

**// ARC Compliant Declaration
@property(strong) NSObject *obj;**

答案 2 :(得分:4)

众所周知,我们无法在iOS 5中的基于ARC的项目中发布任何对象。 因此,当我们想要保留任何对象以便在以后进一步使用并且不希望ARC从内存中删除对象时,我们将对象的属性设置为“强”。