KVO

作者: _Kai_1959 | 来源:发表于2019-11-27 11:47 被阅读0次

    简介

    KVO全称KeyValueObserving,俗称键值监听,是苹果提供的一种事件通知机制,用于监听对象属性改变。

    使用

    1. 通过addObserver:forKeyPath:options:context:方法注册观察者

    2. 实现observeValueForKeyPath:ofObject:change:context:方法,当属性发生改变时,会回调这个方法

    3. 调用removeObserver:forKeyPath:方法移除KVO,add和remove成对出现

    原理

    1. 对象添加KVO监听后,会利用RuntimeAPI动态生成一个子类,并让对象的isa指针指向这个全新的子类,该子类重写了set、class、dealloc方法,新增_isKVOA方法,其中set方法的IMP指针指向Foundation框架的_NSSetObjectValueAndNotify函数

    2. 当修改对象的属性时,系统会先后调用子类的set方法——Foundation框架的_NSSetObjectValueAndNotify函数,willChangeValueForKey方法,父类的set方法,didChangeValueForKey方法,最后会触发监听器(Observer)的监听方法observeValueForKeyPath:ofObject:change:context:

    相关文章

      网友评论

          本文标题:KVO

          本文链接:https://www.haomeiwen.com/subject/ioiwjftx.html