Когда я должен удалить наблюдателей? Ошибка об освобождении объектов перед удалением наблюдателей

Я пытаюсь использовать наблюдение значения ключа в одном из моих классов. Я регистрирую наблюдателей в методе 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];
}

Стоит отметить, что в моей реализации может быть странным то, что я добавляю и удаляю наблюдателей из наблюдателя. Может ли это вызвать мою проблему?

Ответы на вопрос(4)

Ваш ответ на вопрос