KVO/KVC 是观察者模式在 Objective-C 中的实现,以非正式协议(Category)的形式被定义在 NSObject 中。从协议的角度看,是定义了一套让开发者遵守的规范和使用的方法。在 Cocoa 的 MVC 框架中,架起 ViewController 和 Model 沟通的桥梁。
KVC概述:即:Key-value coding,它是一种使用字符串标识符,间接访问对象属性的机制
使用:
利用KVC进行简单赋值:
1 | void test(){ |
利用KVC修改私有成员变量
1 | void text2(){ |
利用KVC将模型转为字典
1 | 普通的将模型转为字典: |
1 | 用kVCV将模型转为字典 |
取出所有模型的属性值
1 | YPPerson *person1 = [[YPPerson alloc ]init]; |
KVO概述:即:Key-value Observing,当指定的对象的属性被修改了,允许对象接受到通知的机制。每次指定的被观察对象的属性被修改的时候,KVO都会自动的去通知相应的观察者
允许对象观察另一个对象的属性。该属性值改变时,会通知观察对象,
如何监听:
1 | -(void)viewDidLoad]; |
作用:给对象绑定一个监听器(观察者)
Oberver : 观察者
KeyPath :要监听的属性
Options : 选项(方便在方法中拿到属性值)
1 | [Person addObserver:self forKeyPath:@"name" options:NSKeyValueObserveringOptionNew | NSKeyValueObservingOptionOld context:nil]; |
当监听的属性值发改变是就调用这个方法
keyPath 要改变的属性
Object 要改变的属性的对象
chang 改变的内容
context 上下文
1 | -(void)observeValueForKeyPath:(NSString *)KeyPath ofObject:(id)Object change:(NSDictionary<NSString *,id> *)chang context{ |
会打印出:
new = ww;
old = ls;