Подтвердить что ты не робот

Когда должен UIViewController добавлять/удалять наблюдателей в NSNotificationCenter?

Если я добавлю наблюдателя в [NSNotificationCenter defaultCenter] в мой viewDidLoad, я должен удалить его в viewDidUnload?

4b9b3361

Ответ 1

Если вам нужно добавить их в свой инициализатор, вы должны удалить его в методе dealloc. В идеале вы должны заботиться только об этих уведомлениях, когда вы в настоящее время находитесь на экране или нет.

Методы viewDid[Appear|Disappear] могут быть вызваны несколько раз за время жизни UIViewController. Зарегистрируйтесь для уведомления в методе viewDidAppear и отмените регистрацию в viewDidDisappear.

Ответ 2

Вы должны удалить его в методе dealloc.

Ответ 3

Мне кажется, viewDidUnload - это место, где можно положить его.

Если обработчик уведомлений, получивший вызов, обращается к любому из видов, управляемых контроллером представления, это будет либо ошибкой, либо вызовет ненужное перезагрузку представления. Если ваше представление не отображается, то, скорее всего, диспетчер представлений не нужно уведомлять. Если это так, по крайней мере проверьте, загружено ли представление, прежде чем вносить в него какие-либо изменения. Хотя представление не загружено, вам может потребоваться обновить состояние вашего контроллера представлений, например, изменить или загрязнить кешированные значения, но не обновлять представление до его повторного загрузки.

Два, что произойдет, если вы не удалитеObserver в viewDidUnload, а viewDidLoad снова вызван? Вы снова вызываете addObserver. Вероятно, это не повредит, центр уведомлений может обнаружить дубликаты добавлений.