面试

设计模式-观察者模式

2018-09-11  本文已影响31人  edison0428

定义

观察者模式也叫做发布-订阅模式,当一个对象状态发生改变,所以依赖于他的订阅者都会得到通知并自动

应用场景

关联场景
事件多级触发

这个可以暂时理解为响应式编程

跨系统消息交互场景

例如:消息队列 事件总线 RxSwift RxJava RxAndroid

观察者模式

KVONSNotification委托Delegate都可以说是OC中的监听者模式,NSNotification相当于更加重量级一些,除了监听还可以负责传递信息等
下面先很粗略的简单介绍下,毕竟之前有专门写过KVONSNotification

其实现原理:KVO是基于runtime机制实现的,当某个类的对象第一次被观察时,系统就会在运行期动态的创建一个该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter方法,派生类在重写基类的setter方法中实现真正的通知机制

上述,就是一个KVO的完整实现,但事实上,还是有瑕疵的,潜在的问题有可能出现在dealloc中对KVO的注销上。KVO的一种缺陷(其实不能称为缺陷,应该称为特性)是,当对同一个keypath进行两次removeObserver时会导致程序crash,这种情况常常出现在父类有一个kvo,父类在dealloc中remove了一次,子类又remove了一次的情况下

我个人感觉有点像多太

上一篇 下一篇

猜你喜欢

热点阅读