2013-03-25 13 views
16

Böyle bir mal beyanında ise:Amaç C'deki zayıf özellik için özel bir belirleyici oluşturmanın doğru yolu nedir?

@property(nonatomic,weak) Foo *someProperty; 

ve ben o zaman böyle bir özel ayarlayıcı beyan: Bu yanlış bir şey

- (void)setSomeProperty:(Foo *)someProp { 
    _someProperty = someProp; 
    //...more custom stuff 
} 

var mı? Yani, derleyici _someProperty ivar'ı __weak değiştirici ile otomatik olarak sentezlemelidir, bu yüzden sadece yukarıdaki setterdeki atamanın yeterli olması gerekir?

cevap

13

Evet, hepsi bunun için var.

@synthesize someProperty = someProperty_; 
+0

+1 oldukça basittir: Eğer gibi _someProperty dışında bir şey isterseniz Tabii ki özel bir Ivar belirtebilirsiniz. –

+0

Çok teşekkürler! Yani, anladığım kadarıyla, ARC'de özel bir belirleyici yazıyorsanız, mülk beyannamesi üzerindeki özniteliklerin "geçersiz kılınması" konusunda endişelenmeniz gereken tek şey, atomik olarak bildirilen mülke sahip olmanızdır (bu durumda ihtiyacınız olacaktır iVar'ın ayarlanması ve kopyalanması hakkında @synchronize'e (bu durumda atama ifadeniz _someProperty = [someProp copy];) gibi görünecektir – adevine

İlgili konular