Подтвердить что ты не робот

Что такое параметр "объект" в NSNotification addObserver :?

Один из моих классов с именем Message.m публикует уведомление с объектом sentObject, как показано ниже

NSDictionary *sentObject = [NSDictionary dictionaryWithObjectsAndKeys:draftData.arr,@"data", nil];

//Post notification to inform a receiver to reload data     
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadDuringSave" object:self userInfo:sentObject];

DraftData.m будет получателем для получения уведомления следующим образом

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

Для отправки уведомления userInfo может быть nil или может быть object (например, sentObject как тип NSDictionary в этом примере).

Вопрос:

Каковы другие параметры для object в методе addObserver? Могут ли они быть  что-нибудь кроме nil, и если да, то что?

4b9b3361

Ответ 1

Этот параметр "object" для "addObserver" является необязательным фильтром filter. После публикации уведомления вы можете установить объект для отправителя уведомления, и тогда вы будете уведомлены только о событиях этого отправителя. Если установлено значение "ноль", вы будете получать все уведомления этого типа (независимо от того, кто их отправил).

Ответ 2

Вы можете использовать его для передачи любого объекта с уведомлением. Получатель уведомления затем сможет получить доступ к этому объекту. Например, вы можете реализовать dataReloaded следующим образом:

- (void)dataReloaded:(NSNotification *)notification {

    NSLog(@"%@", notification.object); // this will log the object you passed in addObserver:selector:name:object:

}

Это может быть полезно, когда вы хотите передать данные с вашим уведомлением, чтобы получатель уведомления мог также использовать эти данные.

Ответ 3

Для всех, кто интересуется документацией на яблоко. Вот что он говорит:

notificationSender

Объект, чьи уведомления, которые наблюдатель хочет получить; то есть, только наблюдатели, отправленные этим отправителем, доставляются наблюдателю. Если вы передаете ноль, центр уведомлений не использует уведомления отправителя, чтобы решить, передавать ли его наблюдателю.