Когда мое приложение закрыто, основной класс контроллеров удаляет себя как Observer из модели и затем выпускает модель. Как это:
- (void)dealloc {
[theModel removeObserver:self
forKeyPath:@"myValue"];
[theModel release];
[super dealloc];
}
И сразу после этого отладчик говорит:
2010-04-29 14: 07: 40.294 MyProgram [13678: a0f] Экземпляр 0x116f2e880 класса TheModel был освобожден, в то время как наблюдатели значения ключа все еще были зарегистрированы в нем. Информация наблюдений была утечка, и даже может быть ошибочно привязана к какому-либо другому объекту. Установите точку останова на NSKVODeallocateBreak, чтобы остановиться здесь в отладчике. Вот текущая информация наблюдения:
(
Контекст: 0x0, Свойство: 0x116f80430>
) * +1010 *
где 0x116f2e880
действительно модель, а 0x116f40ec0
действительно контроллер.
Как контроллер все еще может быть наблюдателем, если он только что удалился в качестве наблюдателя?