我有一个公开NSString属性的自定义类。在接口生成器中,我已经将NSButton的title绑定到我的自定义类的属性。
是否可以从我的自定义类中获取对NSButton实例的引用?
本质上,我正在尝试定位所有绑定到我的自定义类中的属性的用户界面元素。
发布于 2012-11-28 20:16:25
可以将多个观察者绑定到您的属性。使用这种方法,我要提醒您,您可能需要付出额外的努力才能让数组不保留观察者,因为传统上KV观察值不会保留观察者对象,如果您通过将它们放在NSArray中开始保留它们,则很可能会遇到泄漏/堆增长。
覆盖addObserver:...和removeObserver:...的另一个陷阱是,如果没有大量的额外工作,您将不知道观察是针对绑定还是针对其他对象(例如,依赖的keyPath通知)。一种可能的解决方法是在以后的运行循环中使用performSelector:afterDelay:在所有exposedBindings上通过infoForBinding:询问观察者。
依赖KVO系统的私有实现细节不太可能是一种好方法,除非您的目标只是为了更好地了解KVO是如何工作的,但听起来您实际上是在尝试完成一些事情。
真的,整个方法感觉就像是灾难的秘诀。这听起来像是从一开始就违反了MVC。为什么模型对象需要知道视图对象?几乎可以肯定的是,如果将nib放在一个拥有所有UI元素和模型属性的IBOutlets的NSViewController子类中,则可以更好地完成这里要完成的任何任务。然后,该对象将能够更干净地管理视图和模型对象之间明显复杂的关系,而无需运行时技巧。由于您还没有详细说明此技巧的最终目标,因此很难说最好的方法是什么。
https://stackoverflow.com/questions/10938135
复制相似问题