Недавно я попытался скомпилировать более старый проект Xcode (который раньше прекрасно компилировался), и теперь я вижу много ошибок этой формы:
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
Шаблон кода, вызывающий эти ошибки, всегда выглядит следующим образом:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
Я понимаю, почему возникает ошибка. Я говорю компилятору синтезировать мои методы доступа к свойствам (как геттер, так и сеттер), а затем сразу же после этого вручную переопределяю установщик. Этот код всегда немного пахнет.
Итак, как правильно это сделать? Если я использую @dynamic
вместо @synthesize
, мне также придется написать геттер. Это единственный способ?
atomic
свойствами? В случае атомарных свойств было бы неплохо поддерживать синхронизацию пары геттер / сеттер в отношении стратегии блокировки. Это сложно, если одна часть синтезируется, а другая представляет собой собственный код.