我正在寫一個SDK並尋找通過NSNotification
發送對象的最佳做法。通過[[NSNotificationCenter defaultCenter] postNotificationName]方法直接傳遞對象是否危險?
Apple和一些線程包括this表示參數postNotificationNamer
應該是通知的發件人,這在大多數情況下是self
。並且您的自定義對象應該通過userInfo NSDictionary
傳遞。來自Apple文檔:
創建具有給定名稱,發件人和信息的通知並將其發佈給接收方。
例如,不恰當的做法是:
[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification"
object:myObject];
和推薦的方法是:
NSDictionary* userInfo = @{@"myMessage": myObject};
[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification"
object:self
userInfo:userInfo];
我已經試過這兩種方法,他們都很好地工作。問題是,使用以前的方法有沒有風險?在我的情況下,我對通知的發件人不感興趣,但使用後一種方法在我想發送的實際對象周圍引入了一個附加包裝(NSDicionary
)。