Son zamanlarda (eskiden gayet iyi derlemek için kullanılan) eski bir Xcode projesini derlemeye çalıştım ve şimdi bu biçimde birçok 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 kod kalıbı her zaman şöyle görünür:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
Hatanın neden oluşturulduğunu anlayabiliyorum. Derleyiciye özellik erişimcilerimi (hem alıcı hem de ayarlayıcı) sentezlemesini söylüyorum ve hemen ardından ayarlayıcıyı manuel olarak geçersiz kılıyorum. Bu kod her zaman biraz kötü kokmuştur.
Peki bunu yapmanın doğru yolu nedir? Onun @dynamic
yerine kullanırsam @synthesize
, alıcıyı da yazmam gerekecek. Tek yol bu mu?
atomic
mülklerde mi oluyor ? Atomik özellikler durumunda, kilitleme stratejisi açısından alıcı / ayarlayıcı çiftini senkronize tutmak iyi bir fikir olabilir. Bir parça sentezlenirken diğeri özel kod ise bu zordur.