先说一下什么叫通知:
iOS中的通知机制又叫消息机制,其包括2类:一类是本地通知;另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以打开应用程序,但是两种通知的实现原理却完全不同.
那么什么是通知中心呢:
对于初学者,往往会把iOS中的本地通知,推送通知和iOS通知中心的概念弄混.其实二者之间并没有任何关系,事实上它们都不属于一个框架,前者属于UIKit框架,后者属于Foundation框架.
通知中心实际上是iOS程序内部之间的一种消息广播机制,主要为了解决应用程序内部不同对象之间解耦而设计.它是基于观察者模式设计的,不能跨应用程序进程进行通信,当通知中心接收到消息之后会根据内部的消息转发表,将消息发送给订阅者.下面是一个简单的流程示意图:
通知中心和协议代理等传值有什么区别:
如果我们现在好几个界面又要传递同一个值,也就是说我们当前这个界面都要得到另一个界面给它传值,用代理的话那我们shi’b是不是要把那些界面都要实现本界面都要实现本界面的协议才能取到值?这是效率非常低下的一种做法,要实现数据一对多的情况下,通知中心是一个很好的解决方案.
上图中黄色的线代表addObserver也就是添加观察者,当数据发生改变的时候通过紫色的线也就是postNotification发送通知,当我们的通知中心发送了通知的时候,所有的addObserver都能接收到通知.
了解通知中心需要熟悉NSNotificationCenter和NSNotification两个类:
NSNotificationCenter:是通知系统的中心,用于注册和发送通知,下表列出常用的方法。
方法1
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aNa