Я пытаюсь использовать наблюдение за ключевыми значениями в одном из моих классов. Я регистрирую наблюдателей в методе init и удаляю/отменю их регистрацию в dealloc, но я получаю следующую ошибку, которая, кажется, происходит до того, как мой метод dealloc вызывается, согласно моим отладочным отпечаткам.
Экземпляр 0x583870 класса TekkPoint освобождается, а наблюдатели ключевых значений по-прежнему регистрируются вместе с ним. Наблюдательная информация просачивается и может даже ошибочно привязываться к другому объекту. Установите точку останова на NSKVODeallocateBreak, чтобы остановить здесь в отладчике. Здесь текущая информация наблюдений: ( Контекст: 0x0, Свойство: 0x536400 > Контекст: 0x0, Свойство: 0x55aba0 > )
Есть ли способ удалить наблюдателей? Или, возможно, конкретное место, которое я должен удалить?
В соответствии с этим question я делаю все правильно, но зачем мне это сообщение об ошибке?
Вот моя процедура dealloc:
- (void)dealloc {
// Remove all observers.
for (NSString *path in [TekkPoint observedPaths]) {
[self removeObserver:[option_ tChart]
forKeyPath:path];
}
[description_ release];
[weight_ release];
[super dealloc];
}
Одно замечание, которое может показаться странным в моей реализации, заключается в том, что я добавляю и удаляю наблюдателей от наблюдателя, может ли это вызвать мою проблему?