强标识符是@property语句的默认标识符吗?

时间:2012-07-19 00:27:54

标签: objective-c cocoa

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

@property (strong) NSManagedObjectContext *managedObjectContext;

据我了解,strong是默认值,为什么我需要明确声明呢?

3 个答案:

答案 0 :(得分:19)

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

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

答案 1 :(得分:2)

同意理查德。

//强而弱的参考文献  ARC引入了两个新的对象引用限定符:strong和weak。

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

答案 2 :(得分:-2)

The Objective-C Programming Language中:

  

指定

     

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

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