Наблюдение значения ключа
Наблюдение значения ключа является механизмом, позволяющим объекту быть уведомленным непосредственно, когда изменяется свойство другого объекта. Наблюдение значения ключа (или KVO) может быть важным фактором в когезионной способности приложения. Это - режим коммуникации между объектами в приложениях, разработанных в соответствии с шаблоном разработки Контроллера представления Модели. Например, можно использовать его для синхронизации состояния объектов модели с объектами в уровнях контроллера и представлении. Как правило, объекты контроллера наблюдают объекты модели, и представления наблюдают объекты контроллера или объекты модели.
С KVO один объект может наблюдать любые свойства другого объекта, включая простые атрибуты, к - отношения, и к - много отношений. Объект может узнать, каковы текущие и предшествующие значения свойства. Наблюдатели к - многим отношениям сообщают не только о типе внесенного изменения, но и говорят, какие объекты вовлечены в изменение.
Как механизм уведомления, наблюдение значения ключа подобно механизму, предоставленному NSNotification
и NSNotificationCenter
классы, но существуют существенные различия, также. Вместо центрального объекта, что широковещательные уведомления всем объектам, зарегистрировавшимся как наблюдатели, уведомления KVO, переходят непосредственно к наблюдению объектов, когда происходят изменения в значениях свойств.
Реализация KVO
Корневой класс, NSObject
, обеспечивает базовое внедрение значения ключа, замечая, что необходимо редко должны быть переопределить. Таким образом все объекты Какао по сути способны к наблюдению значения ключа. Для получения уведомлений KVO для свойства необходимо сделать следующие вещи:
Необходимо гарантировать, что наблюдаемый класс является значением ключа, наблюдающим совместимый для свойства, которое Вы хотите наблюдать.
Соответствие KVO требует, чтобы класс наблюдаемого объекта также был KVC совместимый и или позволил автоматические уведомления наблюдателя для свойства или реализовал ручное наблюдение значения ключа для свойства.
Добавьте наблюдателя объекта, значение которого может измениться. Вы делаете это путем вызова
addObserver:forKeyPath:options:context:
. Наблюдатель является просто другим объектом в Вашем приложении.В объекте наблюдателя реализуйте метод
observeValueForKeyPath:ofObject:change:context:
. Когда значение свойства наблюдаемого объекта изменяется, этот метод вызывают.
KVO является неотъемлемая часть привязки (OS X)
Привязка какао является технологией OS X, позволяющей Вам сохранять значения в модели, и уровни представления Вашего приложения синхронизировались, не имея необходимость писать много “кода связующего звена”. Через Интерфейсного инспектора Разработчика можно установить установленное соединение между свойством представления и частью данных, «связав» их таким образом, что изменение в каждый отражается в другом. KVO, вместе с кодированием значения ключа и привязкой значения ключа, являются технологиями, способствующими к привязке Какао.