Определить, на каком объекте размещено уведомление? - PullRequest
0 голосов
/ 03 июня 2011

У меня проблемы с определением того, как определить, на какой объект было отправлено уведомление.

Я подписываюсь на уведомление в объекте A :

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedNotification:) name=@"ReceivedData" object:nil]

Я публикуюуведомление от объекта B :

[[NSNotificationCenter defaultCenter] postNotificationName:@"ReceivedData" object: self userInfo: dict];

Я получаю уведомление в объекте A :

- (void) receivedNotification: (NSNotification*) notification
{
   // Method is hit fine, notification object contains data.
}

Как я могу сказать, что онобыл объект B , который отправил данные, а не, например, объект C ?Мне нужна ссылка на отправителя.Я не хочу добавлять отправителя к передаваемому объекту уведомления, поскольку я указываю отправителя при вызове уведомления в объекте B

Ответы [ 2 ]

3 голосов
/ 03 июня 2011

Класс NSNotification имеет метод с именем object , который возвращает объект, связанный с уведомлением.Это часто объект, который разместил это уведомление.

- (void) receivedNotification: (NSNotification*) notification
{
   ...
   id myObject = [notification object];
   ...
}
0 голосов
/ 03 июня 2011

Если вы хотите обрабатывать уведомления только из класса B, то вы указываете его как объект (который вы оставили как nil) при подписке на уведомление.

С nil выполучать уведомления от всех объектов, которые публикуют это конкретное уведомление.

edit

Вы звоните [notification object], чтобы узнать, какой объект опубликовал уведомление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...