属性默认为原子
我想摆脱CLANG/LLVM 3.0给我的烦人警告。我有以下的伊娃在我的对象设置:属性默认为原子
bool preloaded;
而下面的属性声明:
@property(readonly) bool preloaded;
及以下综合呼叫:
@synthesize preloaded;
既然这样,编译器会抱怨:
Property is assumed atomic by default
如果我改变了财产申报加入“原子”:
@property(atomic,readonly) bool preloaded;
它抱怨这件事,太:
error: expected a property attribute before 'atomic'
所以看起来,如果我这样做,我该死,如果我不该死T ...有什么我失踪了吗?
看起来你有隐式原子Objective-C属性在项目设置中启用LLVM编译器警告。关闭此功能将删除警告。
如上所述,atomic
不是一个有效的关键字,只是暗示了nonatomic
的缺席。从苹果公司的Declared Properties documentation:
You can use this attribute to specify that accessor methods are not atomic. (There is no keyword to denote atomic.)
我将其标记为“正确”,因为禁用该设置会摆脱警告,但我仍然困惑为什么这些属性被标记为开头。这是LLVM中的错误吗?如果我可以保持所有警告启用,我会更加快乐...... – Karl
警告不仅仅是满足编译器的游戏,它还提醒开发人员在编程时要注意某些行为。要保持启用警告但禁用此实例,请参阅Clang文档中的[控制静态分析器诊断](http://clang.llvm.org/docs/UsersManual.html#diagnostics)。 – jnic
太棒了!这就像一个魅力!我现在可以编译除迂腐之外的所有警告(由于我使用## __ VA_ARGS__进行日志记录) – Karl
嘛,'atomic'是不是一个有效的属性关键字,因此它是有道理的第二位导致错误。不过不知道第一个。 –
是的,这就是我的想法,但是看到Xcode语法如何突出“原子”,我认为他们可能会将它添加为有效的属性关键字。 – Karl
我试过@property(原子,只读)bool预加载;'它编译得很好。它也删除了警告。我正在使用Xcode 4.2.1。 –