确定哪个对象发布了通知?

时间:2011-06-03 16:42:45

标签: cocoa-touch

我无法确定如何判断哪个对象发布了通知。

我订阅了对象A

中的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedNotification:) name=@"ReceivedData" object:nil]

我发布了来自对象B的通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"ReceivedData" object: self userInfo: dict];

我在对象A

中收到通知
- (void) receivedNotification: (NSNotification*) notification
{
   // Method is hit fine, notification object contains data.
}

如何判断发送数据的对象B ,而不是对象C ?我需要一个对发件人的引用。我不想将发件人添加到正在传递的通知对象中,因为我在对象B

中调用通知时指定了发件人

2 个答案:

答案 0 :(得分:3)

NSNotification类有一个名为object的方法,它返回与通知关联的对象。这通常是发布此通知的对象。

- (void) receivedNotification: (NSNotification*) notification
{
   ...
   id myObject = [notification object];
   ...
}

答案 1 :(得分:0)

如果您只想处理来自B类的通知,则在订阅通知时将其指定为对象(您已将其留作nil)。

使用nil,您会收到发布该特定通知的所有对象的通知。

修改

您致电[notification object]以了解发布通知的对象。