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