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, У вас могут быть проблемы с жизненным циклом контроллера представления.

Другие вопросы по тегам