默认情况下,属性为原子

Kar*_*arl 9 compiler-errors properties objective-c llvm compiler-warnings

我正试图摆脱CLANG/LLVM 3.0给我的恼人警告.我在我的对象中设置了以下ivar:

bool preloaded;
Run Code Online (Sandbox Code Playgroud)

以下属性声明:

@property(readonly) bool preloaded;
Run Code Online (Sandbox Code Playgroud)

以下综合调用:

@synthesize preloaded;
Run Code Online (Sandbox Code Playgroud)

目前,编译器抱怨:

默认情况下,属性为原子

如果我更改属性声明以添加"原子":

@property(atomic,readonly) bool preloaded;
Run Code Online (Sandbox Code Playgroud)

它也抱怨这个:

错误:在'原子'之前预期属性属性

所以看来如果我这样做我该死的,如果我不这样做该死的......我有什么东西我不见了吗?

jni*_*nic 9

您似乎在项目设置中启用了Implicit Atomic Objective-C属性 LLVM编译器警告.关闭此功能将删除警告.

如上所述,atomic它不是有效的关键字,仅仅是缺少的隐含nonatomic.来自Apple的声明属性文档:

您可以使用此属性指定访问者方法不是原子的.(没有关键字来表示原子.)

  • 警告不仅仅是满足编译器的游戏,它们还提醒开发人员在编程时要注意某些行为.要启用警告但禁用此实例,请参阅Clang文档中的[控制静态分析器诊断](http://clang.llvm.org/docs/UsersManual.html#diagnostics). (2认同)