Вопрос

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

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

Мой selectedList: Метод выглядит так:

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

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

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

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

Спасибо

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top