У меня есть проект на базе iOS 5 ARC, и я не понимаю, где мне следует удалить наблюдателя для наблюдений NSNotificationCenter
, которые я зарегистрировал в UIViewController
]. В аналогичных сообщениях на SO говорилось, что это следует делать с помощью метода -dealloc
. Несмотря на то, что этот метод не требуется в проектах ARC, я добавил его с помощью следующего кода:
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
В качестве теста я открываю UIViewController
(внутри UINavigationController
), делаю некоторые вещи, которые вызывают уведомления, а затем выталкивают их из стека, нажав кнопку «Назад». Затем я снова открываю UIViewController
и делаю еще кое-что для запуска уведомлений, но замечаю, что каждый обратный вызов вызывается дважды - это признак того, что предыдущие уведомления не были отменены. Повторение этой процедуры просто приводит к тому, что каждый обратный вызов вызывается более чем несколько раз, поэтому, похоже, они никогда не отменяют регистрацию.
Любая помощь приветствуется!