28、观察者模式与通知机制详解

观察者模式与通知机制详解

1. 提供者/订阅者模式

在提供者/订阅者模式中,选择器参数允许观察者在通知发送时选择要接收的消息。观察者可以将多个通知发送到单个方法,也可以将来自不同源的相同通知路由到不同方法。名称和对象参数可以为 nil,此时它们作为通配符,接受符合其他条件的任何通知。以下是观察者可指定的名称和对象值的组合:
| 名称 | 对象 | 通知 |
| — | — | — |
| @”name” | 对象 | 接收由该对象发布的名为 @”name” 的通知 |
| @”name” | nil | 接收来自任何对象的名为 @”name” 的所有通知 |
| nil | 对象 | 接收该对象发布的所有通知 |
| nil | nil | 接收发布到该通知中心的所有通知 |

最常见的是第二种形式,观察者只需知道通知名称,无需了解对象信息即可注册接收来自任何对象的特定名称的通知。

下面是两个使用通知管理辅助窗口的实际示例:
- 应用程序实现一个持久的“检查器”调色板窗口,始终显示有关前台文档窗口的信息。调色板窗口对象将注册接收来自任何对象的 NSWindowDidBecomeMainNotification 通知。每当文档窗口变为活动状态时,它会收到通知并更新其显示。
- 应用程序实现一个附加到特定窗口的“检查器”调色板窗口。调色板窗口对象将注册接收来自特定文档窗口对象的 NSWindowDidBecomeMainNotification 和 NSWindowDidResignMainNotification 通知。每当该特定窗口变为或不再处于活动状态时,调色板将收到通知,并使用这些事件自动显示或隐藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值