Сообщение NSNotificationCenter, вызывающего исключение “EXC_BAD_ACCESS”

A UIViewController добавляет себя к центру по умолчанию:

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(editFood)
 name:@"editFood"
 object:nil];

Затем a UITableView делегат NSObject отправляет a NSNotification:

[[NSNotificationCenter defaultCenter]
 postNotificationName:@"editFood"
 object:self];

В течение времени выполнения это получает исключение EXC_BAD_ACCESS.

defaultCenter будучи выпущенным где-нибудь? То же понятие работает, когда я отправляю уведомление UIViewController от UIViewController, но это не должно иметь значения, правильно?

62
задан 19 May 2015 в 11:57

1 ответ

EXC_BAD_ACCESS может произойти даже после проверки dealloc, существует как так:

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self]
}

Вышеупомянутое решит проблему большую часть времени, но по-видимому моя причина состояла в том, что я косвенно добавлял наблюдателя с selector: набор к nil следующим образом:

[NSNotificationCenter.defaultCenter addObserver:self
                                         selector:nil
                                             name:notificationName
                                           object:nil];

... поэтому то, когда я отправил что-то с тем notificationName, EXC_BAD_ACCESS, произошло.

решение состояло в том, чтобы отправить селектор, который на самом деле указывает на что-то.

10
ответ дан 31 October 2019 в 13:39

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

Похожие вопросы: