NSNotification, не отправляемый, когда postNotificationName: названный

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

У меня есть 2 строки для кодирования, чтобы добавить наблюдателя и отправить сообщение в 2 различных классах

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

и

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

Если я определил имя к nil это хорошо работает becuase, это - просто широковещательная передача, когда я пытаюсь определить имя уведомления, сообщения никогда не проходят.

14
задан Affian 21 January 2010 в 22:59
поделиться

3 ответа

Все мой код использует nsnotifications , как так:

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

[[NSNotificationCenter defaultCenter] postNotificationName:@"ScanCompleted" object:nil];

Первый зарегистрирован уведомление и вторая публикация уведомления.

12
ответ дан 1 December 2019 в 06:48
поделиться

Измените это:

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

к этому:

[[NSNotificationCenter defaultCenter]postNotificationName:@"Event" object:nil];

Если ваше первое уведомление зарегистрировано правильно, NeweVEntloaded должен быть вызван.

5
ответ дан 1 December 2019 в 06:48
поделиться

Вы пробовали какие-либо другие имена, но @ «Событие» и Nil? Просто чтобы убедиться, что вы можете определить имена ваших событий в одном файле и включить, что в обоих уведомлении о регистрации и отправках. Например:

Заголовок файла:

extern NSString * const NOTE_myEventName;

Исходный файл:

NSString * const NOTE_myEventName = @"MyEventName";

Регистрация:

[[NSNotificationCenter defaultCenter]
 addObserver:self
    selector:@selector(handleMyEvent:)
        name:NOTE_myEventName
      object:nil];

Уведомление Отправка:

[[NSNotificationCenter defaultCenter]
    postNotificationName:NOTE_myEventName object:nil];
2
ответ дан 1 December 2019 в 06:48
поделиться