У меня есть контроллер вида, который представлен модально, и я добавляю его в качестве наблюдателя для уведомления. После того, как я отклонил контроллер вида, он продолжает отвечать на уведомление. Это нормально? Если да, что делать?Отклоненный представленный диспетчер представлений продолжает отвечать на NSNotification
ответ
Необходимо отменить регистрацию контроллера просмотра из центра уведомлений.
Хороший способ сделать это сделать регистрацию на уведомление в viewDidAppear
и отменить регистрацию в viewDidDisappear
.
Кажется, вы забыли удалить наблюдателя после увольнения и ваш контроллер представления сохраняется где-то:
- (void)viewWillDisappear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Если я не удалю, как наблюдатель, он будет сохранен? – BridgeTheGap
NSNotificationCenter не сохраняет объекты, он, кажется, сохраняется где-то в другом месте –
Если я не разрегистрировать, делает контроллер представления получить сохраняется? – BridgeTheGap
Нет, это не так. Общие подходы - добавить removeObserver ... в метод dealloc. Поэтому перед тем, как класс будет освобожден, наблюдатель будет удален. Причина, по которой вы хотите удалить наблюдателя из уведомления, заключается в том, что вы хотите предотвратить отправку дополнительных сообщений. – Greg
Я хочу задать другой вопрос, но я думаю, что не могу. Можете ли вы сказать мне, как программно игнорировать контроллер просмотра? – BridgeTheGap