【发布时间】:2012-01-07 12:00:14
【问题描述】:
我正试图摆脱 CLANG/LLVM 3.0 给我的恼人警告。我在我的对象中设置了以下 ivar:
bool preloaded;
以及以下属性声明:
@property(readonly) bool preloaded;
以及下面的合成调用:
@synthesize preloaded;
就目前而言,编译器抱怨:
属性默认是原子的
如果我更改属性声明以添加“原子”:
@property(atomic,readonly) bool preloaded;
它也抱怨这一点:
错误:在“原子”之前需要一个属性属性
所以看来,如果我这样做,我会被诅咒,如果我不这样做,我会被诅咒......我错过了什么吗?
【问题讨论】:
-
好吧,
atomic不是一个有效的属性关键字,所以第二位导致错误是有道理的。不过,不知道第一个。 -
是的,这就是我的想法,但是看到 Xcode 语法如何突出显示“原子”,我想他们可能会将其添加为有效的属性关键字。
-
我试过
@property (atomic,readonly) bool preloaded;,它编译得很好。它也删除了警告。我正在使用 Xcode 4.2.1。 -
关键字“atomic”在某些情况下有效,但在其他情况下无效。我无法隔离方式和位置,但在某些情况下,它会很好地编译模块,但如果另一个模块引用头文件,则会失败。如果我把失败的属性复制到一个新的类中,它突然又可以正常编译了。这真的开始看起来像 LLVM 中的一个错误。
标签: objective-c properties compiler-errors llvm compiler-warnings