Подтвердить что ты не робот

Параметры from observValueForKeyPath: ofObject: change: context:

Мне было интересно, какие параметры из этого метода вернутся.

- (void) observeValueForKeyPath:(NSString *)keyPath
                       ofObject:(id)object
                         change:(NSDictionary *)change
                        context:(void *)context;

В в документации говорится

keyPath Путь ключа по отношению к объекту к измененному значению.

object Исходный объект ключевого пути keyPath.

изменить словарь, который описывает изменения, внесенные в значение свойства по ключевому пути keyPath относительно объекта.

context Значение, которое было предоставлено, когда приемник был зарегистрирован в получать наблюдение за ключом уведомления.

Не могли бы вы объяснить эти параметры для меня, поскольку я считаю, что документация немного трудно понять.

4b9b3361

Ответ 1

Когда вы зарегистрировались для уведомлений KVO, вы указали путь от ключа к addObserver:. Параметр keypath - это просто возвращаемое вам значение. Параметр объекта - это объект, которому вы отправили сообщение addObserver:. Они могут использоваться для различения уведомлений KVO по различным ключевым папкам/объектам (например, если вы наблюдаете несколько значений).

change - словарь, содержащий информацию о характере изменения стоимости. Он может содержать новое значение или старое значение или, для многих отношений, он может содержать индексы, которые изменились. Его содержимое лучше описано в KVO Programming Guide в разделе "Получение уведомления об изменении".

При регистрации для уведомления вы также можете указать значение контекста. Последнее значение - это просто возвращаемое вам значение. Если у вас нет какой-либо контекстно-зависимой информации, целесообразно передать нуль в addObserver:.

Для хорошего обсуждения некоторых недостатков системы KVO (и некоторых вспомогательных классов для их решения) см. Майк Эш, отличный пост в блоге