从Property中省略/删除'strong'属性时发出警告?

stk*_*stk 9 properties ios automatic-ref-counting xcode5

阅读ProgrammingWithObjectiveC,我可以说:

没有必要明确指定强属性,因为它是默认属性.

如果我省略项目中属性的'strong'属性,

@property (nonatomic) NSString *string;
Run Code Online (Sandbox Code Playgroud)

它给了我一个警告:

未指定"assign","retain"或"copy"属性 - 假定为"assign"

又名.

-Wobjc属性,无属性

因此,编译器似乎在想我仍在进行手动引用计数,否则就不会有任何警告.

此外,在创建一个新的空项目时,如果没有"强"属性,它不会发出警告,因此它必须与当前项目设置有关,甚至可能是某些无法通过UI访问的标志.该项目相当陈旧(约2年),同时经历了几个迁移步骤(XCode 3> 4> 5,非ARC> ARC等).

我在项目设置中到处寻找,但某处似乎是一个缺少的勾选标记或其他东西.

有人遇到过同样的问题吗?

Abh*_*ert 1

确保您拥有最新版本的 Xcode。这是一个新的编译器功能,其工作方式在最近的更新中已多次更改。

确保您的项目配置为使用 clang/llvm 而不是 gcc。我不记得 gcc 是否支持 ARC(有人可以评论说他们知道吗?),但它肯定不支持所有功能。旧的 Xcode 项目将使用 gcc,除非您更改它。所有最近的语言更改仅在 clang/llvm 中实现

您是否启用了 ARC?这将改变行为,因为我们会注意 ARC 可以在项目范围内或针对特定文件启用或禁用。

Xcode 中的一些更改仅适用于新项目,而旧项目已配置为禁用它们。查看与 ARC 相关但未设置为默认值的任何设置。