【发布时间】:2012-02-27 23:29:01
【问题描述】:
我遇到了一个令人沮丧的 KVO 特性:所有通知都通过一个方法 (observeValueForKeyPath:....) 汇集,如果对象正在观察许多属性,则需要一堆 IF 语句。
理想的解决方案是将方法作为参数传递给首先建立观察的方法,但这似乎是不可能的。这个问题是否存在解决方案?我最初考虑使用keyPath 参数(addObserver:forKeyPath:options:context:)通过NSSelectorFromString 调用方法,但后来我遇到了KVO Dispatcher pattern with Method as context 的帖子和它链接的文章,它提供了不同的解决方案以便传递参数以及(虽然我还没有得到那个工作)。
我知道很多人都遇到过这个问题。是否出现了处理它的标准方法?
【问题讨论】:
-
目前有多种不同的基于块的 KVO 实现,您可以通过简单的 google 找到。
-
github.com/ReactiveCocoa/ReactiveCocoa 是一种特别新颖的方法,可以让价值变化的观察变得不那么笨拙。
标签: iphone objective-c macos cocoa key-value-observing