KVC和KVO-基本用法
2020-06-10 本文已影响0人
肖旭晖
(一)KVC
通过键或者键值路径读写值
- 通过键取值
- (nullable id)valueForKey:(NSString *)key;
- 通过键取值
-
2.通过键赋值
- (void)setValue:(nullable id)value forKey:(NSString *)key;
-
3.通过键值路径取值
- (nullable id)valueForKeyPath:(NSString *)keyPath;
-
4.通过键值路径赋值
- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;
(二)KVO
-
添加观察
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context;
-
解除观察
- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;
1. observer:观察者,也就是KVO通知的订阅者。订阅着必须实现observeValueForKeyPath:ofObject:change:context:方法
2. keyPath:描述将要观察的属性,相对于被观察者。
3. options:KVO的一些属性配置;有四个选项。
4. context: 上下文,这个会传递到订阅着的函数中,用来区分消息,所以应当是不同的。
options所包括的内容
NSKeyValueObservingOptionNew:change字典包括改变后的值
NSKeyValueObservingOptionOld:change字典包括改变前的值
NSKeyValueObservingOptionInitial:注册后立刻触发KVO通知
NSKeyValueObservingOptionPrior:值改变前是否也要通知(这个key决定了是否在改变前改变后通知两次)
参考文章
https://www.jianshu.com/p/b9f020a8b4c9
https://juejin.im/post/5ac5f4b46fb9a028d5675645