Нещодавно я спробував скласти старіший проект 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
{
//..
}
Я бачу, чому помилка створюється. Я кажу компілятору синтезувати мої доступності властивостей (як getter, так і setter), а потім негайно після цього я переосмислюю програму вручну. Цей код завжди трохи пахнув.
Отже, який правильний спосіб зробити це? Якщо я використовую @dynamic
замість @synthesize
, мені доведеться також писати геттер. Це єдиний спосіб?
atomic
властивостями? У випадку атомних властивостей може бути хорошою ідеєю синхронізувати пару getter / setter щодо стратегії блокування. Це складно, якщо одна частина синтезується, а інша - спеціальний код.