OC语言中的通知

来源:互联网 发布:谷歌访问助手mac版 编辑:程序博客网 时间:2024/05/19 14:38

通知

通过学习KVO我们发现KVO是一种简单的观察者设计模式,涉及到2个对象,分别是观察者和被观察者。这种方式实质有很大局限性,那么OC的Foundation框架,在基于KVO的基础上又为开发者提供了一种新的观察者设计模式,即通知。

通知是一种发送给一个或者多个观察者用来通知其在程序中发生了某个事件的消息。它是一种程序中事件的发起者或者是处理者和其他想要知道该事件的对象的沟通的一种方式。消息的接受者,即观察响应该事件来变换自己的UI、行为或者状态。

在OC中,使用NSNotification类来表示一个通知。

// 初始化一个NSNotification类的实例对象//    NSNotification *notification1 = [NSNotification notificationWithName:@"通知名称" object:self];//    NSNotification *notification2 = [NSNotification notificationWithName:@"通知名称" object:self userInfo:@{@"content":@"jay onliving"}];

其中:
1.name:表示通知名称,最好用英文名,用来识别通知对象
2.object:表示通知的发起人
3.userInfo:表示通知的内容

在现实生活中,我们的邮件都经过邮局发送给接收人。在OC中也一样,Foundation框架定义了一个单例类,通知中心NSNotificationCenter来统一发送通知的实例对象给观察者。

//通知中心 单例类    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];    [center postNotification:notification1];//简便写法    [center postNotificationName:@"通知名称" object:self];    [center postNotificationName:@"通知名称" object:self userInfo:@{@"content":@"jay onliving"}];

建立通知发送机制
1.注册相关监听者
2.在需要的时候,被监听的对象去通知中心发送通知
3.在dealloc方法中,移除通知

0 0