removeObserver: forKeyPath: в dealloc - PullRequest
       8

removeObserver: forKeyPath: в dealloc

5 голосов
/ 19 октября 2011

Если мой экземпляр наблюдает какое-то свойство другого объекта, я должен вызвать removeObserver: forKeyPath: in dealloc?

Ответы [ 2 ]

10 голосов
/ 19 октября 2011

Да

... если нет более подходящего времени в начале выполнения.

Наблюдатели считаются несохраненными ссылками. Отказ от отмены регистрации может привести к тому, что ваш освобожденный экземпляр будет отправлен в обмен сообщениями.

3 голосов
/ 19 октября 2011

Вам нужно использовать -removeObserver: forKeyPath: для удаления наблюдателя до того, как - [NSObject dealloc] запустится, так что да, выполнение этого в методе -dealloc вашего класса сработает.
см. Эти вопросы.
Удаление наблюдателя
question2

...