厌倦了拥有一个巨大的 observeForKeyPath 方法,里面只是填满了用于确定哪个值实际发生了变化的 if 语句?希望有更好的方法?Blocks 是封装功能片段的好方法 - 为什么不将 KVO 的力量与模块化的 blocks 结合起来呢?
别再等了
通过向您的 NSObject 类添加一个超级简单的分类,您也可以体验到更干净的 KVO 代码,同时避免那些嵌套的 if 语句。
要使用 CocoaPods 将其添加到项目中,请将以下内容添加到您的 Podfile 中
pod 'KVOBlocks'
或者,您也可以直接从 KVO Blocks 目录复制单个分类类并将其直接添加到项目中。
要开始使用 blocks 作为观察者,您可以使用与原始 addObserver 方法类似的方法签名
[model addObserver:self forKeyPath:@"keyname" options:NSKeyValueObservingOptionsNew context:nil withBlock:^(NSDictionary *change, void *context) {
// Handle KVO change on this keyname
}];
类似地,要删除观察者,您可以像平时那样调用
[model removeBlockObserver:self forKeyPath:@"keyname"];
如果有任何问题或疑虑,请随时让我知道 - 这只是一个我为帮助清理我的代码而整理的小东西,所以任何建议都欢迎!