21

我正在学习 Objective-C 和 Cocoa 框架(通过 Aaron Hillgass 的书)并试图弄清楚为什么以下行包含“强”标识符。

@property (strong) NSManagedObjectContext *managedObjectContext;

据我了解,strong 是默认设置,那么为什么我需要显式声明它呢?

4

3 回答 3

23

你可以在不写任何东西的情况下声明它,但是当你回到代码或其他开发人员查看你的代码时会发生什么?

您可能知道默认值将设置为强,但初级程序员会很困惑地确定声明的变量是强还是弱。

于 2012-07-19T00:34:57.280 回答
2

同意理查德。

//强引用和弱引用 ARC 引入了两个新的对象引用限定符:强引用和弱引用。

在 ARC 下,所有对象引用变量默认都是强的。这不仅适用于属性;@property 语句的默认标识符是为非对象类型分配的,因为对象类型应该是强的。所有对象引用 - 属性值、实例变量、自动变量、参数变量和静态变量 - 就像 ARC 下的保留属性一样。

于 2014-07-08T19:57:36.370 回答
-2

Objective-C 编程语言中

分配

指定 setter 使用简单赋值。此属性是默认值。

也就是说,setter 语义的默认属性是assign,而不是strong

于 2012-07-19T00:51:52.363 回答