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

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



