kvo实现原理_kvo实现原理,kvo底层实现原理

1.kvo键值监听   当属性改变时监听属性值的变化

添加监听方法    addObserver:(nonnull NSObject *) forKeyPath:(nonnull NSString *) options:(NSKeyValueObservingOptions) context:(nullable void *)

获取值方法

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;

2.kvo  添加监听方法时,

(1)会利用runtime动态生成一个类NSKVONotifying_xxxx 继承 xxxx,并且让instance的isa指针指向全新的子类、重写-(void)setXxx{}方法,

(2)当修改instance对象属性时,会调用 -(void)setXxx{}里面的NSSetxxxValueAndNotify();的函数 ,NSSetxxxValueAndNotify()函数是Foundation的

(3)NSSetxxxValueAndNotify()函数,执行了下面的方法 ,

willChangeValueForKey:

[super setAge:age];

didChangeValueForKey:

下面看代码证明动态生成NSKVONotifying_xxxx类 继承 xxxx

证明1:

证明2:

证明3:

3 . NSKVONotifying_xxxx类看一下里面实现了哪些方法

4.证明   willChangeValueForKey:   ;  didChangeValueForKey:被调用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值