Ios Retain关键字未在Xcode 4.6 ARC项目中引发编译器错误?
我刚在一家客户那里开始了一份新合同 我正在着手一个Android开发人员编写的应用程序原型,他是Objective-C的新手(后来他离开了公司,所以无法提问) 该项目使用ARC以Objective-C编写。其中一个文件的属性声明为Ios Retain关键字未在Xcode 4.6 ARC项目中引发编译器错误?,ios,objective-c,xcode,automatic-ref-counting,Ios,Objective C,Xcode,Automatic Ref Counting,我刚在一家客户那里开始了一份新合同 我正在着手一个Android开发人员编写的应用程序原型,他是Objective-C的新手(后来他离开了公司,所以无法提问) 该项目使用ARC以Objective-C编写。其中一个文件的属性声明为 @property (nonatomic, retain, readonly) <class> *<name>; @属性(非原子、保留、只读)*; (其中,和替换为每个属性的实际类和属性名称。) 过去,当我试图在ARC项目中包含手动引用计数
@property (nonatomic, retain, readonly) <class> *<name>;
@属性(非原子、保留、只读)*;
(其中,
和
替换为每个属性的实际类和属性名称。)
过去,当我试图在ARC项目中包含手动引用计数的代码时,编译器在retain
关键字上抛出了一个错误。然而,在这个项目中,它并没有抱怨
我检查了,文件没有设置为手动引用计数编译
我编辑了属性定义,并将单词retain
替换为strong
,这也可以编译
苹果最近是否改变了编译器,使retain
成为ARC中strong
的同义词?相反,strong
是否是手动引用计数编译的文件中retain
的同义词
如果是这样的话,这项更改是什么时候做出的?虽然没有详细的文档记录,但这说明:
请注意同义词,它意味着
retain
和strong
属性的含义相同。来自document Clang 3.8 documentation部分:
保留意味着拥有强大的所有权
据我记忆所及,retain
在属性语句中一直是strong
的同义词
这只是property语句中的一个关键字,没有理由暗示这在其他用法中是这两者之间的一般等价物。它所做的是使从弧前到弧前的转换更加容易。@property(非原子、保留、只读)*;在ARC项目中非常有效。。。在另一个地方有一个错误我有很强的内存,如果是模糊的,当混合使用不同内存管理语义的代码(手动引用计数应用程序中的ARC代码,或者visa应用程序中的ARC代码)时会出现编译器错误。那么,我在想什么呢?是实例变量上的
\uuu strong
和\uu保留
限定符吗?我很困惑…是的,可能就是这样。
// The following declaration is a synonym for: @property(retain) MyClass *myObject;
@property(strong) MyClass *myObject;