Вспомогательные классы / библиотеки, чтобы сделать использование KVC / KVO на iOS более практичным / безопасным? - PullRequest
6 голосов
/ 29 июля 2011

Этот вопрос действительно ищет определенный класс, который, как я знаю, существует, но не может его найти.

Несколько недель назад я прочитал статью, в которой описан вспомогательный класс для использования KVC - он позволяет инкапсулировать подписки KVC.чтобы можно было наблюдать несколько значений без необходимости использовать один и тот же метод хандера, а также сделать очистку наблюдателей KVC более безопасной (поскольку очистка KVC действительно привередлива и склонна к исключениям).

Итак, в ответахЯ ищу либо тот вспомогательный класс, с которым я сталкивался ранее, либо другие примеры попыток обернуть KVC, чтобы сделать его более безопасным и приемлемым для общего использования.

Ответы [ 2 ]

7 голосов
/ 30 июля 2011

Я наконец нашел то, что искал, ключом к поиску был поиск примеров использования KVO с блоками.

Я нашел три интересных ресурса, которые я представлю в качестве отправной точки - если у кого-то есть другие, которые хороши, пожалуйста, также ответьте.

Первая ссылка - это статья, о которой я упоминал ранее. Он содержит большое описание проблем с KVO в его нынешнем виде и интересный вспомогательный класс, который инкапсулирует сеанс KVO:

http://www.mikeash.com/pyblog/key-value-observing-done-right.html

Вторая - более простая категория NSObject, которая позволяет вам передать блок, который будет активирован в уведомлении об изменении:

http://blog.andymatuschak.org/post/156229939/kvo-blocks-block-callbacks-for-cocoa-observers

Последняя является еще одной категорией в NSObject, которая использует механизм привязки для добавления наблюдения:

http://wirestorm.net/blog/2011/05/27/block-based-observation-with-kvo/

2 голосов
/ 09 декабря 2015

Более современная реализация - реализация Facebook kvo с использованием блока Он добавил категорию NSObject, чтобы добавить свойство KVOController для всех объектов. Но тогда нам следует быть более внимательными к проблеме сохранения циклов.

...