Скажем, у меня есть список объектов модели и объект контроллера, который заинтересован в изменении свойств отдельного объекта модели. Когда я добавляю объект, я использую addObserver для каждого ключа, который он заинтересован в использовании KVO между контроллером и объектом модели. Теперь, когда один из наблюдаемых объектов уходит, мне нужно сообщить контроллеру представления прекратить наблюдать за изменениями на этом отдельном объекте для конкретного ключа.KVO очистка отдельных наблюдаемых ключей
Что такое элегантный способ сделать это? Лучший способ, я могу думать, это добавить новый ключ kRemoveObject, который я вызываю addObserver в моем контроллере, который запускается непосредственно перед удалением объекта. Затем я удаляю все обнаруженные ключи, включая kRemoveObject для конкретного экземпляра. Кто-нибудь знает более чистый способ? Это кажется немного громоздким.
__block не прерывает цикл сохранения. Вы должны использовать __weak – user1687195
KVO не заставляет вас использовать большой оператор switch. Если вы делаете это так, вы можете пересмотреть свою реализацию. – quellish