2011-01-27 3 views
11

Что касается «Обеспечения Кво соответствия», есть некоторое официальное определение, которое, кажется, как трудно понятьПонимания КВО в прошивкой

Для того, чтобы считать КВО-совместимыми для конкретного свойства, класса должен обеспечить следующее:

  1. Класс должен быть ключ-значение кодирования уступчивый собственности как указанного в обеспечении KVC соответствия.

  2. Класс должен разрешить автоматические уведомления наблюдателей для собственности, или осуществлять ручной ключ-значение наблюдений для свойства.

Кто может дать более конкретные примеры, чтобы сделать это более ясным? Спасибо

ответ

8

Посмотрите на Ensuring KVO Compliance раздел «Автоматическое управление в ручном режиме» Руководства по программированию по наблюдению за ключевыми значениями. Соблюдение, по существу, достигается посредством следующих соглашений об именах для методов и/или ivars.

По моему опыту, KVO стремится «просто работать», что приятно.

+7

Ссылка rot: «Обеспечение соответствия требованиям KVO» перенесено на http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOCompliance.html#//apple_ref/doc/uid/ 20002178-BAJEAIEE – erikprice

1

Когда вы используете теги @property для create getters/ setters, магия автоматически подключается к отношениям «Один», и вам нужно только добавитьObserver ... и реализовать метод наблюдения ..., чтобы поймать обновления.

Настоящая проблема заключается в понимании того, как вы реализуете To-Many Key Value Compliance, чтобы сделать изменяемый набор или массив работы. documentation here является ключевым и понимает, что существует два раздела ... Индексированные коллекции и неупорядоченные коллекции. Это действительно помогло мне понять, что если мой @property - это NSMutableArray, вам нужно посмотреть на методы в области Indexed, и если ваш @property - это NSMutableSet, вам нужно посмотреть документацию Unordered.

Необходимые методы, которые необходимо реализовать, даже если вы не планируете их использовать.

Смежные вопросы