Селектор NSNotificationCenter не быть названным

В моем приложении для iPad в одном классе я регистрируюсь для уведомления:

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
    [nc addObserver:self selector:@selector(selectedList:) name:@"TTSelectedList" object:nil];

Мой selectedList: метод похож на это:

- (void)selectedList:(NSNotification*)notification
{
    NSLog(@"received notification");
}

Затем в другом классе (a UITableViewController) Я отправляю то уведомление, когда строка выбрана:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"posting notification");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"TTSelectedList" object:nil];
}

Я могу подтвердить, что уведомление отправляется, потому что "регистрация уведомления" зарегистрирована к консоли, но "полученное уведомление" никогда не называют, означая, что уведомление не получено, и селектор не назвали. Я не могу выяснить то, что вызывает это.

Спасибо

6
задан indragie 7 July 2010 в 21:30
поделиться

1 ответ

Наиболее вероятная причина в том, что вы на самом деле не вызываете addObserver:selector:name:object:. У вас там нет строки логирования; вы уверены, что код выполняется?

Вторая наиболее вероятная причина заключается в том, что вы вызываете removeObserver: до публикации уведомления. Чаще всего это происходит в dealloc (который должен всегда вызывать removeObserver, если вы когда-либо что-либо наблюдали). Ошибка здесь будет заключаться в том, что ваш наблюдающий объект деаллоцировался до уведомления.

14
ответ дан 8 December 2019 в 17:18
поделиться
Другие вопросы по тегам:

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