SORU
12 Temmuz 2010, PAZARTESİ


hata: cannot çifti bir kullanıcı ile sentezlenmiş ayarlayıcı/alıcı atom tanımlı özellik yazılabilir ayarlayıcı/alıcı

Geçenlerde eski Güncellemelerinden bir proje iyi derlemek için kullanılan () derlemek için çalıştı, ve şimdi bu formun çok fazla hata görüyorum:

error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter

Bu hatalara neden olan bir kod deseni her zaman bu gibi görünüyor:

// Interface:

@property (retain) NSObject * someProperty;

// Implementation:

@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
    //..
}

Hata oluşturulur anlayabiliyorum. Ben derleyici özelliği benim set (her iki alıcı ve ayarlayıcı) sentezlemek için söyle, ve o zaman ayarlayıcı manuel hemen sonra. Bu kod her zaman biraz kokuyordu.

Bu yapmak için doğru yolu nedir? @synthesize yerine @dynamic kullanırsam getter şey yazmak zorunda kalacağım. Bunun tek yolu nedir?

CEVAP
20 Temmuz 2010, Salı


Aynı sorun bende de vardı ve biraz araştırma yaptıktan sonra, burada bu konuda benim vardığım sonuç şudur:

Derleyici olarak atom bildirdiğiniz @property (nonatomic anahtar unutulduğunda yani) hakkında uyarır, henüz bu özellik erişimi eşitlemek için ne kadar eksik bir uygulama sağlamak.

Bu uyarı yok yapmak için:

Eğer @property bir atom olmak bildirirseniz aşağıdakilerden birini yapın:

  • @dynamic kullanın veya;
  • @synthesize kullanım ve sentez ayarlayıcı ve bir alıcı ya; devam et
  • manuel bir uygulama sağlarher ikisi debelirleyici ve alıcı (yukarıdaki yönergeleri kullanarak olmadan).

(nonatomic) @property bildirirseniz daha sonra alıcıları ve ayarlayıcıları manuel ve sentez uygulamaları karıştırabilirsiniz.

Güncelleme: Mülk üzerinde Bir Not Otomatik Sentezi

LLVM itibariyle 4.0, Çınlama @dynamic olmadığını ilan özellikleri için otomatik sentez sağlar. Eğer dışarı @synthesize gidersen bile varsayılan olarak, derleyici sizin için alıcı ve ayarlayıcı yöntemleri sağlayacaktır. Ancak, atomik özellikler için kurallar hala aynıdır: her İki derleyici sunalımher ikisi dealıcı ve ayarlayıcı, YA da onları uygulamakher ikisi dekendinize!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Exalto_Gamer

    Exalto_Gamer

    15 EKİM 2014
  • RayperEnglishKnight

    RayperEnglis

    24 Kasım 2008
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011