Наблюдение значения ключа

Наблюдение значения ключа является механизмом, позволяющим объекту быть уведомленным непосредственно, когда изменяется свойство другого объекта. Наблюдение значения ключа (или KVO) может быть важным фактором в когезионной способности приложения. Это - режим коммуникации между объектами в приложениях, разработанных в соответствии с шаблоном разработки Контроллера представления Модели. Например, можно использовать его для синхронизации состояния объектов модели с объектами в уровнях контроллера и представлении. Как правило, объекты контроллера наблюдают объекты модели, и представления наблюдают объекты контроллера или объекты модели.

Art/kvo.jpg

С KVO один объект может наблюдать любые свойства другого объекта, включая простые атрибуты, к - отношения, и к - много отношений. Объект может узнать, каковы текущие и предшествующие значения свойства. Наблюдатели к - многим отношениям сообщают не только о типе внесенного изменения, но и говорят, какие объекты вовлечены в изменение.

Как механизм уведомления, наблюдение значения ключа подобно механизму, предоставленному NSNotification и NSNotificationCenter классы, но существуют существенные различия, также. Вместо центрального объекта, что широковещательные уведомления всем объектам, зарегистрировавшимся как наблюдатели, уведомления KVO, переходят непосредственно к наблюдению объектов, когда происходят изменения в значениях свойств.

Реализация KVO

Корневой класс, NSObject, обеспечивает базовое внедрение значения ключа, замечая, что необходимо редко должны быть переопределить. Таким образом все объекты Какао по сути способны к наблюдению значения ключа. Для получения уведомлений KVO для свойства необходимо сделать следующие вещи:

  • Необходимо гарантировать, что наблюдаемый класс является значением ключа, наблюдающим совместимый для свойства, которое Вы хотите наблюдать.

    Соответствие KVO требует, чтобы класс наблюдаемого объекта также был KVC совместимый и или позволил автоматические уведомления наблюдателя для свойства или реализовал ручное наблюдение значения ключа для свойства.

  • Добавьте наблюдателя объекта, значение которого может измениться. Вы делаете это путем вызова addObserver:forKeyPath:options:context:. Наблюдатель является просто другим объектом в Вашем приложении.

  • В объекте наблюдателя реализуйте метод observeValueForKeyPath:ofObject:change:context:. Когда значение свойства наблюдаемого объекта изменяется, этот метод вызывают.

KVO является неотъемлемая часть привязки (OS X)

Привязка какао является технологией OS X, позволяющей Вам сохранять значения в модели, и уровни представления Вашего приложения синхронизировались, не имея необходимость писать много “кода связующего звена”. Через Интерфейсного инспектора Разработчика можно установить установленное соединение между свойством представления и частью данных, «связав» их таким образом, что изменение в каждый отражается в другом. KVO, вместе с кодированием значения ключа и привязкой значения ключа, являются технологиями, способствующими к привязке Какао.