Я предполагаю, что вы хотите вызвать событие в объекте (называемом «наблюдателем»), когда свойство изменяется в другом объекте («наблюдаемом»).
Вы можете сделать это двумя способами:
используя центр уведомлений, вы можете переопределить установщик, разместив уведомление с помощью любого из методов NSNotificationCenter "postNotification:", тогда все заинтересованные наблюдатели будут уведомлены, если они зарегистрировались для этого вида уведомлений.
используя KVO (Наблюдение значения ключа), вы должны явно зарегистрировать наблюдателя в экземпляре, у которого есть свойство; например если self хочет зарегистрироваться в свойстве «instanceToObserve» «myProperty»:
[instanceToObserve addObserver:self forKeyPath:@"myProperty" option:NSKeyValueObservingOptionNew context:NULL];
и затем реализовать в классе "self" функцию "наблюдения":
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
// your implementation goes here
}
Что использовать оба - решать вам. Учтите, что KVO автоматически поддерживается, если вы следуете основным правилам соглашения Какао, поэтому никаких дополнительных усилий не требуется и никаких изменений в синтезированном сеттере не требуется.