我正在启动一个项目,我认为这将受益于绑定(我有一个源列表表,几个浏览器视图等),但我认为它也是非常可行的,也许更容易理解,没有它们.根据我有限的经验,我发现绑定很难排除故障并且非常"神奇"(例如,很难在任何地方插入日志以确定哪些内容正在破坏,一切都可行或不起作用).
这只是我缺乏经验的谈话(在这种情况下,我可以坐下来花一些时间来完成我对绑定的理解并期望事情开始变得更清晰/更容易)或者我会更好地自己编写所有胶水代码我确信我能理解并排除故障的方式.
使用绑定.
请注意,您必须遵循MVC模式才能从绑定中获得最大收益.这比看起来容易,因为Cocoa现在几乎为你做了一切:
查看:NSView
和子类(当然),NSCell
子类NSWindow
和子类
控制器:NSController
和子类(特别是NSArrayController
)
型号:核心数据
如果您不打算使用Core Data,那么您可以使用自己的模型对象,但这很容易.大多数这些对象的方法都是简单的访问器,@synthesize
只要你的目标是Leopard.
您通常无法编写任何代码,但Bindings可以让您编写非常少的代码.
推荐阅读:
键值编码(KVC)编程指南
键值观察(KVO)编程指南
模型对象实施指南
KVC访问器方法(上述KVC编程指南的一部分)和我的KVC兼容访问器选择器格式的完整列表
绑定本质上看起来很神奇.要理解绑定背后的魔力,我认为必须彻底了解KVC/KVO.我真的很清楚.
然而,在我的情况下(Obj-C的新手 - 9个月),一旦我得到KVC/KVO绑定是一种刺激.它大大减少了我的胶水代码,使我的生活变得更加轻松.调试绑定成为确保我的键值更改是可观察的情况.我发现我可以花更多的时间来编写我的应用程序应该做的事情而不是确保视图反映数据.
我同意尽管绑定最初是非常令人生畏的.
我的一般方法是尽可能使用绑定开始,看看情况如何.但是,如果一个特定的界面元素开始变得有问题,使用绑定,或者更多的努力而不是它的价值,那么我会毫不犹豫地回到使用更传统的方法(例如数据源,动作)时才有意义.我发现这些东西可能很难提前预测,但我认为从长远来看,偏好绑定更好,只要你不在他们不提供的情况下坚持使用它们过于教条任何好处.