KVO
KVO 的基本和高级使用
- context 如果不需要使用,填 NULL。如果需要使用 context 推荐传递静态变量。官方文档中还提到,在父类和子类中同时监听某个属性时无法使用 keyPath 区分的情况下就可以使用 context 进行区分。
- 是否有必要移除观察者?当然有必要,该移除的时候就一定要移除
automaticallyNotifiesObserversForKey:
的使用keyPathsForValuesAffectingValueForKey:
的使用- 可变数组属性的 KVO 问题
1 | /* 用于与 `-addObserver:forKeyPath:options:context:` 和 `-addObserver:toObjectsAtIndexes:forKeyPath:options:context:` 一起使用的选项。 |
1 | @interface NSObject(NSKeyValueObserving) |
KVO 的底层实现原理
isa-swizzling
自己实现一个简单的 KVO
查看 GNU 的 KVO 实现或逆向分析 Foundation 源码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 masterKing 的个人博客!
评论