无setter方法时候 使用KVC,为什么也会促发KVO?

来源:4-10 KVC相关面试问题

慕姐1870521

2019-01-24

如果一个类中只有成员变量,没有写setter和getter方法,为什么在setvalue:forkey的时候也会触发KVO,KVO不是不是在setter方法里面的么,按照KVC的setvalue:forkey的实现流程图,在没有Setter Method is exit的时候,会去Instance var is exit 然后直接Invoke,这里没经过setter方法,是怎么触发KVO的,求解答

写回答

1回答

于海

2019-02-01

系统为我们自动生成的setter方法里是会调用setValue:forKey:方法的,KVC是键值编码,它的含义是通过setValue:forKey去赋值。KVO是键值观察,具体含义可以看课程kvo的讲解,kvo的观察是基于setValue:forKey的,当我们监听一个对象的key时,系统会通过isa_swizzle方式创建子类,覆写setter方法

0
0

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程