0

У меня есть контроллер вида, который представлен модально, и я добавляю его в качестве наблюдателя для уведомления. После того, как я отклонил контроллер вида, он продолжает отвечать на уведомление. Это нормально? Если да, что делать?Отклоненный представленный диспетчер представлений продолжает отвечать на NSNotification

ответ

1

Необходимо отменить регистрацию контроллера просмотра из центра уведомлений.

Хороший способ сделать это сделать регистрацию на уведомление в viewDidAppear и отменить регистрацию в viewDidDisappear.

+0

Если я не разрегистрировать, делает контроллер представления получить сохраняется? – BridgeTheGap

+0

Нет, это не так. Общие подходы - добавить removeObserver ... в метод dealloc. Поэтому перед тем, как класс будет освобожден, наблюдатель будет удален. Причина, по которой вы хотите удалить наблюдателя из уведомления, заключается в том, что вы хотите предотвратить отправку дополнительных сообщений. – Greg

+0

Я хочу задать другой вопрос, но я думаю, что не могу. Можете ли вы сказать мне, как программно игнорировать контроллер просмотра? – BridgeTheGap

0

Кажется, вы забыли удалить наблюдателя после увольнения и ваш контроллер представления сохраняется где-то:

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 
+0

Если я не удалю, как наблюдатель, он будет сохранен? – BridgeTheGap

+0

NSNotificationCenter не сохраняет объекты, он, кажется, сохраняется где-то в другом месте –