一般问起来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传错导致崩溃