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