Понимание KVO в iOS

Относительно "обеспечения соответствия KVO", есть некоторые официальные определения, которые кажутся трудными для понимания.

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

  • Класс должен быть ключевым кодом Соответствует указанных в разделе "Обеспечение соответствия требованиям KVC".

  • Класс должен разрешать автоматический уведомления наблюдателя для собственность или руководство по реализации наблюдение за ключевым значением для свойства.

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

Ответ 1

Взгляните на Обеспечение соответствия требованиям KVO в разделе "Автоматическая поддержка в ручном режиме" Руководства по программированию по наблюдению за ключевыми значениями. Соответствие по существу достигается посредством следующих соглашений об именах для методов и/или ivars.

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

Ответ 2

Когда вы используете теги @property для создаете геттеры/сеттеры, магия автоматически подключается для отношений To-One, и вам нужно только добавитьObserver... и реализовать метод наблюдения..., чтобы поймать обновления.

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

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