在 XCode 4.3.2 中,当我运行 ARC 转换重构工具时,我所有的“保留”属性选项都不会更改为“强”。现在是暗示“强”还是这只是 XCode 4.3.2 的问题?
例子:
前
@property (nonatomic, retain) NSString * someString;
后
@property (nonatomic) NSString * someString;
在 XCode 4.3.2 中,当我运行 ARC 转换重构工具时,我所有的“保留”属性选项都不会更改为“强”。现在是暗示“强”还是这只是 XCode 4.3.2 的问题?
例子:
前
@property (nonatomic, retain) NSString * someString;
后
@property (nonatomic) NSString * someString;
“strong”是使用 ARC (LLVM 3.1) 时的默认值,因此新代码是正确的。
(在 ARC 之前,默认值为“assign”)
参见http://clang.llvm.org/docs/AutomaticReferenceCounting.html#ownership.spelling.property
strong 相当于非 ARC 保留。因此,当您从非 ARC 转移到 ARC 时,XCode 不理解保留一词,因此将其删除。从而导致错误或至少警告,因为所有实例变量都需要至少声明两个属性。