Interface Builder提供了在XIB文件中创建非视图/控制器对象的功能。在过去,我使用此功能来实例化和连接管理XIB中视图组件的小组件,这似乎是一件非常合理的事情。
但是,我想知道其他合法用于此功能的内容。它是一个相当有吸引力的工具,因为它有效地移动了将这些对象的依赖关系从代码中实例化并注入到框架中的责任。
对于Interface Builder,我很想知道使用此dependency injection功能的准则是什么?
答案 0 :(得分:2)
我使用的经验法则是,如果辅助对象与以某种方式在nib中定义的UI相关,则可以放入辅助对象 - 因此,任何代理对象都包含对元素的引用或被触发的动作。
代理方法全部在加载nib时接入,并通过userinfo字典传入已创建的对象,您可以选择传入nib名称。
我认为,在一个纯粹的逻辑笔尖中,使用目标/动作系统来连接多个代理对象,没有任何错误。这可能比在代码中进行所有布线更容易,但我没有看到在实践中使用过。
答案 1 :(得分:1)
没有指导方针,你是自己的。
在teabot的评论之后编辑:对我来说,目前还不清楚nib内存管理是如何工作的。当我发布一个拥有nib的窗口控制器时,反序列化的对象真的会留下内存吗?
我想我读过某个地方,如果你在nib控件和窗口控制器之间使用绑定,你会得到泄漏,在某些情况下我自己进入了funny nib-related annoyances。
也很难将一些与nib相关的错误追踪为错误的绑定密钥或缺少动作IB链接。
所以我更喜欢将nib内容保持在最低限度,通常是你需要充分利用绑定(通常是数组控制器)所需的所有东西,但不能更多。
[我对new question]
有所了解