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

时间:2014-03-24 15:06:35

标签: ios properties xcode5 automatic-ref-counting

阅读ProgrammingWithObjectiveC,我可以说:

  

无需明确指定强属性,因为它是默认属性。

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

@property (nonatomic) NSString *string;
它给了我一个警告:

  

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

又名。

  

-Wobjc属性-NO-属性

所以不知怎的,编译器似乎在想我还在做手动引用计数,否则就不会有任何警告。

另外,在创建一个新的空项目时,如果没有“强”属性,它就不会发出警告,因此它必须与当前项目设置有关,甚至可能还有一些无法访问的标记通过用户界面。该项目相当陈旧(约2年),同时经历了几个迁移步骤(XCode 3> 4> 5,Non-ARC> ARC等)。

我在项目设置中到处都是,但某处似乎是一个缺少的勾选标记。

遇到同样问题的人?

2 个答案:

答案 0 :(得分:3)

刚搜索过,最近的构建属性是CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES,我怀疑它有任何关系。

您可以通过选择"全部"来检查目标覆盖的默认参数。和"级别" “构建设置”视图中的选项。

enter image description here

检查目标默认为“否”但“正在变为”的警告。

答案 1 :(得分:1)

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

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

中实现

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

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

相关问题