addObserver/removeObserver в viewWillAppear/viewWillDisappear
Я вызываю addObserver в viewWillAppear и удаляю Observer в viewWillDisappear. Вроде нормально работает. Тем не менее, в журналах сбоев XCode я получаю сообщения о том, что у некоторых клиентов происходит сбой при вызове removeObserver (21 сбой вчера...). У меня не было ни одного клиента, который сообщал бы о сбое, поэтому я предполагаю, что это относительно периодически.
Я прочитал предложение инкапсулировать вызов removeObserver в блок @try/@catch, к которому я могу прибегнуть, но мне любопытно, почему происходит сбой моего removeObserver. Я предполагаю, что это потому, что (каким-то образом) уведомление не было добавлено. (Существуют ли другие причины? Я новичок в iOS и новичок в журналах сбоев...)
FWIW, я только вызываю addObserver из одного viewWillAppear и удаляю его в одном viewWillDisappear. Я пытался продублировать проблему и никогда не видел (в сообщениях NSLog) вызов viewWillDisappear без предварительного вызова viewWillAppear.
Спасибо!
2 ответа
Вызов addObserver в viewWillAppear, уравновешенный вызовом removeObserver в viewWillDisappear, должен работать.
Вы добавляете несколько отдельных наблюдателей в свой viewWillAppear, а затем удаляете всех наблюдателей в viewWillDisappear? Лучше удалить отдельных наблюдателей по имени, так как система может также использовать центр уведомлений.
Попробуйте удалить вас наблюдателя в viewDidDissapeared
, У вас могут быть проблемы с жизненным циклом контроллера представления.