9

我想擺脫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 ...有什麼我失蹤了嗎?

+0

嘛,'atomic'是不是一個有效的屬性關鍵字,因此它是有道理的第二位導致錯誤。不過不知道第一個。 –

+0

是的,這就是我的想法,但是看到Xcode語法如何突出「原子」,我認爲他們可能會將它添加爲有效的屬性關鍵字。 – Karl

+0

我試過@property(原子,只讀)bool預加載;'它編譯得很好。它也刪除了警告。我正在使用Xcode 4.2.1。 –

回答

9

看起來你有隱式原子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.)

+0

我將其標記爲「正確」,因爲禁用該設置會擺脫警告,但我仍然困惑爲什麼這些屬性被標記爲開頭。這是LLVM中的錯誤嗎?如果我可以保持所有警告啓用,我會更加快樂...... – Karl

+2

警告不僅僅是滿足編譯器的遊戲,它還提醒開發人員在編程時要注意某些行爲。要保持啓用警告但禁用此實例,請參閱Clang文檔中的[控制靜態分析器診斷](http://clang.llvm.org/docs/UsersManual.html#diagnostics)。 – jnic

+0

太棒了!這就像一個魅力!我現在可以編譯除迂腐之外的所有警告(由於我使用## __ VA_ARGS__進行日誌記錄) – Karl