NSNotification, addObserver и removeObserver - removeObserver как в ViewDidUnload, так и в dealloc? - PullRequest
0 голосов
/ 03 апреля 2011

Я хочу добавить контроллер представления в качестве наблюдателя уведомления.

Когда вызывается метод выбора, я оповестю пользователя.Я хотел бы, чтобы это предупреждение появлялось только тогда, когда этот контроллер представления является контроллером вида сверху.

Я думал добавить его в качестве наблюдателя в методе viewDidLoad.Но где лучше удалить контроллер вида в качестве наблюдателя?

Может ли быть проблемой, если я удалю его как в viewDidUnload, так и в dealloc?

1 Ответ

2 голосов
/ 03 апреля 2011

Нет. Согласно документации :

Удаляет все записи, указывающие данного наблюдателя, из таблицы отправки получателя.

Если таких записей нет, удалить нечего, так что это не проблема.

Однако, в зависимости от того, как вы используете это, добавление его в качестве наблюдателя в viewDidLoad не означает, что он будет использоваться только тогда, когда этот контроллер представления является «контроллером верхнего вида» (например, если у вас есть несколько вкладки и переходите от одной к другой, если только вы не получите предупреждения памяти, представления других (невидимых) вкладок не будут выгружены при удалении от них).

В зависимости от вашей цели, может быть лучше добавить наблюдателя в viewDidAppear (и, если это так, удалить в viewWillDisappear).

...