OC语言之代理与通知
2019-06-14 本文已影响0人
Jimmy_L_Wang
代理
- 准确的说是一种软件设计模式代理模式
- iOS当中以
@protocol
形式体现。 - 传递方式一对一
代理的工作流程
协议中除了方法,还可以定义属性

一般声明为weak
以规避循环引用。
通知(NSNotification)
-
使用观察者模式来实现的用于跨层传递消息的机制。
-
传递方式为一对多

如何实现通知机制?
NSNotificationCenter
系统类中可能会维护一个Notification_Map
,其中的key值是notificationName
,value是一个Observers_List
(监听者列表),所以列表包含通知接收的观察者,其次还要包含关于观察者调用的方法,比如收到通知之后,观察者的回调方法是哪个。所以列表中包括观察者对象,以及回调方法的相关数据信息

代理与通知的区别
代理是由代理模式实现的,其传递方式为一对一,通知是由观察者模式实现的,其传递方式是一对多。