KVO 键值监听 / KVC 键值编码

KVO(Key-Value Observing)本质是监听set方法,重写set方法。

过程:

1、动态生成一个 NSKVONotifying_Class 的子类

2、改变父类的 isa 指针,指向动态创建的子类

3、添加 setName 方法(重写)

4、保存观察者(关联属性)


void setName (id self, SEL _cmd, NSString *str) 

{

    1、保存当前的Class

    2、将self指针指向父类

    3、调用父类的setName

    4、拿出观察者

    5、通知外界

    6、改回子类

}


KVC(Key-Value Coding):直接使用一个或一串字符串标识符去访问,操作类的属性。

- (nullable id)valueForKey:(NSString*)key; 的调用顺序:

先调用相关方法:

getKey > Key > isKey

如果没有相关方法,就会调用下面这个方法:

+(BOOL)accessInstanceVariablesDirectly。

如果返回NO,程序就报错;如果返回YES(默认返回YES),就去找相关变量。顺序如下:0

_key > _isKey > key > isKey

你可能感兴趣的:(KVO 键值监听 / KVC 键值编码)