9

atomik varsayılır CLANG/LLVM 3.0'ın bana verdiği rahatsız edici bir uyarıdan kurtulmaya çalışıyorum. Aşağıdaki ivar benim nesnesinde belirledik:Özellik varsayılan olarak

bool preloaded; 

Ve aşağıdaki özellik bildirimi:

@property(readonly) bool preloaded; 

Ve şu sentez çağrı: Haliyle

@synthesize preloaded; 

, derleyici şikayet :

( ) Ben "atomik" eklemek için mal beyanında değiştirirseniz:

@property(atomic,readonly) bool preloaded; 

O da, bu konuda yakınır:

error: expected a property attribute before 'atomic'

Yani ben yaparsam lanet ve ben 'yok eğer kahrolurum görünür t ... Kaybettiğim bir şey var mı?

+0

Eh, 'atomic' geçerli bir özellik anahtar kelime değildir, bu nedenle ikinci bit bir hataya neden olduğunu mantıklı. İlk başta Dunno hakkında. –

+0

Evet, düşündüğüm buydu, ama Xcode sözdiziminin "atomik" kelimesini vurgularken nasıl göründüğünü anladım, belki de bunu geçerli bir özellik anahtar kelimesi olarak eklediler. – Karl

+0

Önceden yüklenmiş olan (kaynak, salt okunur) bob'i denedim; Uyarıyı da kaldırır. Xcode 4.2.1 kullanıyorum. –

cevap

9

Proje ayarlarınızda Implicit Atomic Objective-C Özellikleri LLVM derleyici uyarısı etkinleştirilmiş gibi görünüyor. Bunu kapatmak uyarıyı kaldıracaktır.

Yukarıda belirtildiği gibi, atomic geçerli bir anahtar kelime değildir ve yalnızca nonatomic'un yokluğu tarafından belirtilmiştir. Apple'ın Declared Properties documentation Gönderen:

You can use this attribute to specify that accessor methods are not atomic. (There is no keyword to denote atomic.)

+0

Bu ayarı "doğru" olarak işaretlerim çünkü ayarın devre dışı kalması uyarıdan kurtulur, ancak yine de bu özelliklerin neden başlayacak şekilde işaretlendiğine şaşıyorum. LLVM'de bir hata mı? Tüm uyarıları etkin tutabilseydim çok daha mutlu olurdum ... – Karl

+2

Uyarılar sadece bir derleyiciyi tatmin etmenin ötesinde, geliştiricinin programlarken belirli davranışların farkında olması için bir hatırlatma görevi görüyor. Uyarıyı etkin tutmak ancak bu örneği devre dışı bırakmak için Clang belgelerinde [Statik Çözümleyici Tanılama Denetimi] (http://clang.llvm.org/docs/UsersManual.html#diagnostics) konusuna bakın. – jnic

+0

Harika! Büyüleyici bir şekilde çalıştı! Şimdi pedantic dışındaki tüm uyarıları derleyebilirim (günlüğüm için ## __ VA_ARGS__ kullanımım nedeniyle) – Karl