iOS中的通知机制

2020-01-15 13:54:07王冬梅

注册


[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callBack1:) name:@”PostOne” object: nil]; 

这里的参数是跟postNotificationName: object:对应的。注册了哪个通知name参数就填上对对应的值

回调处理


-(void) callBack1(NSNotification*)notification
{
notification.name://通知的名称
notification.object;//发送通知时的object
notification.userInfo//发送通知时的userInfo
}

删除

在使用消息完毕(就是不再对接收到的消息作处理的)之后,需要进行删除操作


[[NSNotificationCenter defaultCenter]removeObserver: self];//删除所有注册过的通知
[[NSNotificationCenter defaultCenter]removeObserver:self name:@”PostOne“ object:nil];//删除名称为”PostOne“的通知

补充:

ios中观察者模式与通知机制,及KVO

在ios开发中,通知机制和KVO都是依靠观察者模式得以实现。通知机制与KVO的不同之处在于,前者是一个中心对象为所有观察者提供变更通知,后者是被观察对象直接向观察者发送通知。

以下关注观察者模式与通知机制实现:

1、观察者模式中Subject对象,又可称目标对象,是通知的发布者,又是被观察者。提供注册和取消注册的方法;Observer对象,又可称为观察者,是通知的订阅者。Observer类中,相识Subject,以达到能够接收通知。

2、ios中的通知机制,是Cocoa Touch框架为开发者开发的类,让开发者不必自己写观察者模式,用到它便能实现。对于我而言,通知机制的所有使用,都集中到一个类中。而导致我用通知机制去理解观察者模式时,迷糊于Subject和Observer,谁是通知的发送者,因为类中集结了观察者和发送者。