通知
通过学习KVO
,我们发现KVO
是一种简单的观察者设计模式,涉及到两个对象,分别是观察者和被观察者,这种方式实质有很大局限性,那么OC的Foundation
框架,在基础上又为开发者提供了新的一种
观察者设计模式,即通知
。
通知是一种发送给一个后者多个观察者,用来通知其在程序中发生了某个事件的消息。它是一种程序中事件的发起者或者是处理者和其它想要知道该事件的对象的沟通的一种方式,消息的接受者,即观察响应该事件来交换自己的UI、行为或者状态。
在OC中,使用NSNOtification
类来表示一个通知
//初始化一个NSNotifi类的实例对象
NSNotification *notification1=[NSNotification notificationWithName:@"通知名称" object:nil];
NSNotification *notification2=[NSNotification notificationWithName:@"通知名称" object:self userInfo:@{@"content":@"jay on living"}];
其中:
1.name:表示通知名称,最好英文名,用来识别通知对象
2.object:表示通知的发起人
3.userInfo:表示通知的内容
在现实生活中,我们的邮件都需要由邮局发送给接收人,在OC中也一样,Foundation
框架定义一个单例类,通知中心NSNotificationCenter
来统一发送通知的实例对象给观察者
//通知中心 单例类,拿到通知中心的单例
NSNotificationCenter *center=[NSNotificationCenter defaultCenter];
//通知中心发送通知
[center postNotification:notification1];
简便写法,通知中心直接发送通知
建立通知发送机制,步骤如下:
1.注册相关监听者,并实现监听收到通知时的方法
2.在需要的时候,被监听的对象去通知中心发送通知
3.在delloc
方法中,移除通知