Какво прави аргументът „обект“ в „postNotificationName:object:“?

- (void)postNotificationName:(NSString *)notificationName 
                      object:(id)notificationSender

Може ли някой да ми помогне да разбера параметъра object в горния метод?

използвал съм

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

и

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

Те и двете работят в моя случай. Но искам да разбера какво прави аргументът и какво трябва да пропускам.


person Nitya    schedule 11.10.2013    source източник
comment
възможен дубликат на как да се използва свойството обект на NSNotificationcenter   -  person User 1531343    schedule 11.10.2013


Отговори (3)


От документацията:

notificationSender 
The object posting the notification.

Това е всичко, може да имате нужда или не. Ако не го използвате, когато получите известието, няма значение дали е нула или не.

проверете документацията:

NSNotificationCenter

person Antonio MG    schedule 11.10.2013
comment
Бих казал, че изпращането на self, когато не използвате този параметър, може да бъде объркващо за някой, който се опитва да разбере кода. Ако съобщението е само информация, че нещо се е случило и не се нуждаете от контекст за него - изпратете nil. С цел ясно намерение. - person Tomasz Bąk; 11.10.2013

NSNotification има следните три атрибута:

  1. name - уникалният идентификатор за уведомление.
  2. object - параметър id, който може да бъде предаден на получателя и може да се използва за каквато и да е цел в приемащия край, ако е необходимо
  3. userInfo - NSDictionary обект: в случай че искате да предадете множество обекти, направете NSDictionary с двойките ключ/стойност и го предайте.

Ако не искате да предавате нищо на приемника, предайте nil за object.

person blackzero    schedule 11.10.2013

Калъф: Аз

Когато напишете обект като Self или друг обект, това означава, че известието ще се задейства с обекта, което означава, че ще прехвърлите обекта като параметър на известието.

ще получите обекта, както следва:

Пример

[[NSNotificationCenter defaultCenter] postNotificationName:kProductsLoadedNotification object:self];

[[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(productsRequestCompleted:)
                                                     name:kProductsLoadedNotification
                                                   object:self];
- (void)productsRequestCompleted:(NSNotification *)notification
{
NSLog("%@",[notification object]); //You will get the Parameter
}

Кога

Регистър: нула

Когато напишете обект като нула, това означава, че известието ще се задейства без обектът означава без предаване на обекта като параметър на известието.

person user1673099    schedule 11.10.2013
comment
Полезно ли е това за вас? - person user1673099; 11.10.2013