我的一个名为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
的其他参数是什么?它可以不是零,它们是什么......
答案 0 :(得分:50)
“addObserver”的“对象”参数是可选过滤器。您可以将其设置为通知的发件人,然后只会通知该发件人的事件。如果设置为“nil”,您将收到此类型的所有通知(无论是谁发送的)。
答案 1 :(得分:4)
您可以使用它来传递包含通知的任何对象。然后,通知的接收者将能够访问该对象。例如,您可以像这样实现dataReloaded
:
- (void)dataReloaded:(NSNotification *)notification {
NSLog(@"%@", notification.object); // this will log the object you passed in addObserver:selector:name:object:
}
当您希望通过通知传递数据时,它非常有用,因此通知的接收者也可以使用该数据。
答案 2 :(得分:2)
对任何对苹果文档感兴趣的人。这就是它所说的:
notificationSender
观察者想要接收通知的对象;那是, 只有此发件人发送的通知才会传递给观察者。 如果您传递nil,则通知中心不会使用通知 发送者决定是否将其传递给观察者。