Когда я должен удалить наблюдателей? Ошибка об освобождении объектов перед удалением наблюдателей
Я пытаюсь использовать наблюдение значения ключа в одном из моих классов. Я регистрирую наблюдателей в методе 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];
}
Стоит отметить, что в моей реализации может быть странным то, что я добавляю и удаляю наблюдателей из наблюдателя. Может ли это вызвать мою проблему?