NSNotification是同步还是异步?和delegate相比有啥区别,效率呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSNotification是同步还是异步?和delegate相比有啥区别,效率呢?相关的知识,希望对你有一定的参考价值。
参考技术A 1、NSNotification是同步还是异步?默认情况下,创建的NSNotification是同步的,
发布通知
接收通知
执行结果
通过这里的时间间隔可以看出,在抛出通知以后,观察者在通知事件处理完成以后(这里我们休眠3秒),抛出者才会往下继续执行,也就是说这个过程默认是同步的;当发送通知时,通知中心会一直等待所有的observer都收到并且处理了通知才会返回到poster;
那能不能当成异步处理呢?
两种方法:
第一种方法,发布通知的时候搞在子线程中,当然了,接收方法触发的也是在子线程中
第二种方法,接收方法在子线程中执行
2、NSNotification和delegate相比有什么区别
1>NSNotification是一对多的关系,不需要两个之间建立什么联系,类似于一种广播似的发送消息,接受者只要是声明了接收信息,就能接收。消息接受者通过keyPath的方式指定需要接受的消息类型,通常在对象初始化完成以后声明开始接受消息,在对象被销毁前注销接受消息。
NSNotification发布一个广播的通知。(面向所有的类),当有谁需要这个通知的话,就注册成为它的会员(会员存在Array里)。notification通过管理array来实现事件的操作。
当哪个 会员 什么时候不需要再成为会员的时候,就需要注销(在dealloc里释放)
2>delegate是一对一的关系,首先两个要建立联系,才能进行相应的传值回调动作。
3、效率哪个更高
效率肯定是delegate比NSNotification高。
以上是关于NSNotification是同步还是异步?和delegate相比有啥区别,效率呢?的主要内容,如果未能解决你的问题,请参考以下文章