观察者模式与通知机制详解
1. 提供者/订阅者模式
在提供者/订阅者模式中,选择器参数允许观察者在通知发送时选择要接收的消息。观察者可以将多个通知发送到单个方法,也可以将来自不同源的相同通知路由到不同方法。
1.1 观察者注册条件
名称和对象参数中的一个或两个可以为 nil。当省略时,它们充当通配符,接受符合其他条件的任何通知。以下是观察者可以指定的名称和对象值的组合:
| 名称 | 对象 | 通知 |
| ---- | ---- | ---- |
| @”name” | 对象 | 接收由对象发布的名为 @”name” 的通知 |
| @”name” | nil | 接收任何对象发布的名为 @”name” 的所有通知 |
| nil | 对象 | 接收对象发布的所有通知 |
| nil | nil | 接收发布到该通知中心的所有通知 |
最常见的形式是第二种,观察者将接收任何对象发布的具有给定名称的所有通知。观察者不必知道该对象是什么,也不需要该对象的引用即可注册,只需要知道通知的名称。
1.2 实际示例
以下是两个使用通知管理辅助窗口的实际示例:
- 持久检查器调色板窗口 :应用程序实现一个持久的“检查器”调色板窗口,该窗口始终显示有关前台文档窗口的信息。调色板窗口对象将注册以接收来自任何对象(nil)的 NSWindowDidBecomeMainNotification 通知。每当文档窗口变为活动状态时,它将收到通知并更新其显示。
- 特定窗口的检查器调色板窗口
超级会员免费看
订阅专栏 解锁全文
3638

被折叠的 条评论
为什么被折叠?



