KVO
KVO(key-value-observing)
- 系统对观察者设计模式的一种实现
- 通过运行时的
ISA-Swizzling技术实现
使用到的主要方法有1
2
3
4
5
6
7
8
9
10
11//动态创建类
objc_allocateClassPair
//动态添加方法
class_addMethod
//注册类
objc_registerClassPair
//isa-swizzling
object_setClass
KVC
KVC(key-value-coding)
valueForKey执行流程
访问器方法是否存在的判断标准(假设valueForKey中传入的key为@”name”)
- getName
- name
- isName
如果别观察对象中实现了上面三个方法,那么valueForKey:@"name"方法时就会调用到上面的三个方法,如果三方法都存在只调用其中的一个方法,优先级就是上面的顺序。
实例变量是否存在的判断标准是
| 类中定义字段名 | valueForKey中传入的key的名称 |
|---|---|
| name | name |
| _name | name 或 _name |
| isName | name 或 isName |
| _isName | name 或 _isName 或 isName |
setValueForKey执行流程
setter方法的判断标准是
是否实现了setName或setIsName
验证的demo从这里下载。