Пользовательские события iPhone для изменения значения свойства - PullRequest
2 голосов
/ 25 ноября 2011

возможно ли добавить пользовательское событие для изменения значения свойства? Мне нужно вызвать событие, когда значение свойства изменяется.

Ответы [ 3 ]

3 голосов
/ 25 ноября 2011

Я предполагаю, что вы хотите вызвать событие в объекте (называемом «наблюдателем»), когда свойство изменяется в другом объекте («наблюдаемом»).

Вы можете сделать это двумя способами:

  1. используя центр уведомлений, вы можете переопределить установщик, разместив уведомление с помощью любого из методов NSNotificationCenter "postNotification:", тогда все заинтересованные наблюдатели будут уведомлены, если они зарегистрировались для этого вида уведомлений.

  2. используя 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 автоматически поддерживается, если вы следуете основным правилам соглашения Какао, поэтому никаких дополнительных усилий не требуется и никаких изменений в синтезированном сеттере не требуется.

0 голосов
/ 25 ноября 2011

Вы можете использовать KVO (наблюдение значения ключа) или определить свой собственный метод для сеттера и записать в него собственные события? Как правило, KVO используется для наблюдения за изменениями значения свойства.

/2534214/ponimanie-kvo-v-ios

http://nachbaur.com/blog/back-to-basics-using-kvo

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/KeyValueCoding.html

0 голосов
/ 25 ноября 2011

Конечно.например,

в файле .h

NSString * myString

в файле .m

- (NSString *)myString {
    //Custom event
    return myString;
}

Это создает свойство myString, которое может бытьиспользуется как self.myString

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...