之前在公司的project中遇到了要用到通知的地方,解决后过了几个月了现在总结一些网上找的资料,在这里简单summary一下iOS中通知中心的概念知识吧(objective - c版)
一、什么事通知中心?
(1)通知中心:一个应用程序只有一个通知中心(单例对象),在程序内部提供了消息广播的一种机制,负责信息的传递与交互。即通知中心就是一个信息传递者,把接收到的消息根据内部的一个消息转发表,将消息转发给需要的对象。
(2)通知中心是基于观察者模式的,它允许注册,删除观察者。
(3)一个通知中心NSNotificationCenter可以有很多的通知消息NSNotification,对于每一个NSNotification可以有很多的观察者Observe来接收通知。
重点用法:
二、创建通知中心(一个程序只有一个通知中心,可创建多次,反正都是同一个)
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
三、通知的发布(可以自定义通知,也可以是使用系统提供的通知)
[center postNotificationName:(NSString*) object:(id) userInfo:(NSDictionary*)];
或者
[center postNotificationName:(NSString*) object:(id)];
postNotificationName:通知的名称
object:通知的发布者
userInfo:通知的额外信息
四、注册通知监听器
[center addObserve:(id) selector:(SEL) name:(NSString*) object:(id)];
addObserve:监听器,即谁要接受这个通知,这里传入需要接受通知的对象。
selector:监听器接收到通知后调用这个函数进行处理,这里要注意将当前通知对象作为参数传入,类似于button的点击事件一样把button传入点击后执行的方法中。
name:所接受的通知的名称,只接收这个name的通知,如果为nil则接收全部通知。
object:通知发布者,只接受这个名称的对象所发布的通知,如果为nil,则接收人回想发布的通知。
五、取消注册通知监听器
(1)[[NSNotificationCenter defaultCenter] removeObserve:(id)];
取消指定对象监听的全部注册监听。
(2)[[NSNotificationCenter defaultCenter] removeObserve:(id) name:(NSString *)];
取消指定对象监听的指定发布者的指定名称的通知。