1.KVO与KVC
KVO全称 Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变

未添加KVO时实例对象的内存调用图

未使用KVO监听.png
使用了KVO的实例对象的内存调用图:

使用KVO监听.png
OC在运行的时候自动生成了一个NSKVONotifying_MJPerson类对象最为MJPerson类对象的子类对象,通过底层C _NSSetIntValueAndNotify方法重写了setAge:方法,进而实现了KVO的过程
核心代码如下:

KVC 全称Key-Value Coding,俗称“键值编码”,可以通过一个Key来访问某个属性。KVC常用方法。

赋值逻辑

赋值逻辑.png
取值逻辑

取值.png
这里赋值和取值都是有顺序的。
最后补充:KVC内部会实现willChangeValueForKey和didChangeValueForKey
网友评论