簡體   English   中英

什么是NSNotification addObserver中的參數`object` :?

[英]What is parameter `object` in 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類型)。

題:

addObserver方法中object其他參數是什么? 它們可以是除了nil以外的任何東西嗎?如果是的話,它是什么?

addObserver ”的“object”參數是可選的過濾器。 您可以將其設置為通知的發件人,然后只會通知該發件人的事件。 如果設置為“nil”,您將收到此類型的所有通知(無論是誰發送的)。

您可以使用它通過通知傳遞任何對象。 然后,通知的接收者將能夠訪問該對象。 例如,您可以像這樣實現dataReloaded

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

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

}

當您希望通過通知傳遞數據時,它可能很有用,這樣通知的接收者也可以使用該數據。

對於任何對蘋果文檔感興趣的人。 這就是它所說的:

notificationSender

觀察者想要接收其通知的對象; 也就是說,只有此發件人發送的通知才會傳遞給觀察者。 如果您傳遞nil,通知中心不會使用通知的發件人來決定是否將其傳遞給觀察者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM