NSnotificationCenter postNotificationName谁是接收者?

时间:2011-02-11 03:59:21

标签: ios notifications nsnotificationcenter receiver

2 个答案:

答案 0 :(得分:3)

您不会直接向某人发布通知。通知的名称和发件人确定谁收到通知。

感兴趣的对象可以订阅通知。当您发布通知时,将收到通过该名称收听通知的所有订阅者。实际上Cocoa通知可以在两个级别进行调整:

  • 通知名称(字符串)
  • 发送方

class documentation清楚地说明了这一点。

这是来自文档的一个小ASCII表,显示根据创建时使用的通知名称和发件人通知谁:

Notification name | Notification sender | Notification set specified
--------------------------------------------------------------------
Specified         | Specified           | Notifications with a particular name from a specific sender.
Specified         | Unspecified         | Notifications with a particular name by any sender.
Unspecified       | Specified           | Notifications posted by a specific sender.
Unspecified       | Unspecified         | All notifications.

未指定表示为该字段提供了nil值。

通知允许松散耦合的设计,因为对象在其实现中没有绑定在一起,并且可以彼此独立地工作。

答案 1 :(得分:1)

notification广播机制。从文档开始,“对象使用addObserver注册到通知中心接收通知(NSNotification对象):selector:name:object:或addObserverForName:object:queue:usingBlock:methods。”即,任何感兴趣的对象都可以注册为监听器