Каков наилучший способ реагирования на изменения данных при вызове свойств. Например, если у меня есть свойство, называемое data
, как я могу реагировать, когда вызывается [object setData:newData]
и все еще использует синтезированный сеттер. Инстинктивно, я бы переопределить синтезированный сеттер так:Реагирование на сеттеры
- (void)setData:(DataObject *)newData {
// defer to synthesised setter
[super setData:newData];
// react to new data
...
}
... но, конечно, это не имеет смысла - я не могу использовать super
как это. Итак, каков наилучший способ справиться с этой ситуацией? Должен ли я использовать KVO? Или что-то другое?
Да, KVO - это путь. – JeremyP
Переопределение '-didChangeValueForKey:' не рекомендуется. Если вы используете автоматические уведомления KVO (что делает большинство классов), этот метод не будет вызываться до тех пор, пока наблюдатель не будет добавлен. –
@Mike: Вот почему его единственный второй вариант. – ughoavgfhw