iOS 基础知识整理(二)KVO

一般问起来kvo 不知道怎么回答 不就是 一个观察者机制!!!!!!
有什么好问的!!!!

好 现在来整理下 kvo的实现原理

kvo
k- key
v-value
o-observer

kvo遵循了NSKeyValueCoding,是oc对观察者模式的一种实现

实现原理

swift是一个静态语言,没有runtime机制,所以Swift里面想要用runtime 必须继承NSObject

比如说 a 对象被观察 这时候kvo就利用runtime 创建一个notic_a 的类 并且把当前的isa指针执行这个类 这个新类是原来类的子类 还会将原类的实例方法重写
并且 kvo为NSKVONotifion_a重写setter方法,在重写的setter方法中 修改值之前会调用willchangeValue 修改之后会调用didChangeValueForKey最后共这两个方法 将在observalueForKeyPath中被调用

kvo缺点

重复的add和remove导致crash

observer被释放导致崩溃

keyPath传错导致崩溃

你可能感兴趣的:(iOS 基础知识整理(二)KVO)