2013-10-11 46 views
0
- (void)postNotificationName:(NSString *)notificationName 
         object:(id)notificationSender 

有人能幫我理解上面方法中的object參數嗎?'postNotificationName:object:`中的'object'參數有什麼作用?

我用

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

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

他們在我的情況下工作。但我想明白這個論點的作用和我應該傳遞的內容。

+0

的可能重複的[如何使用NSNotificationcenter的對象屬性(http://stackoverflow.com/questions/4312338/how-to-use-the-object-property-of-nsnotificationcenter) –

回答

2

從文檔:

notificationSender 
The object posting the notification. 

這一切,你可能需要它,或者你可能沒有。如果您在收到通知時未使用它,則無論它是否爲零都沒關係。

檢查文檔:

NSNotificationCenter

+1

我想說當你不使用這個參數時發送'self'可能會讓有人試圖理解代碼。如果消息只是發生了某些事情的信息,並且您不需要上下文,請發送'nil'。爲了明確的目的。 –

1

NSNotification具有以下三個屬性:

  1. name - 通知的唯一標識符。
  2. object - 一個id參數,其可以被傳遞到接收器,並且可以在接收端被用於任何目的,如果需要的話
  3. userInfo - NSDictionary對象:如果你想通過多個對象,使一個NSDictionary與鍵/值對一起傳遞。

如果你不想傳遞任何東西給接收者,通過nilobject

0

案例:自

當你寫對象自我或其他任何對象,則意味着該 通知將觸發與對象是指通過將對象作爲通知的 參數。

你會得到對象如下:

[[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 
} 

案例:無

當你寫對象爲零,那麼這意味着 通知將在沒有對象表示的情況下觸發,而不通過對象作爲通知的 參數。

+0

對您有所幫助? – user1673099

相關問題