1

Interface Builder 提供了在 XIB 文件中创建非视图/控制器对象的能力。过去,我曾使用此功能来实例化和连接管理 XIB 中的视图组件的小组件,这似乎是一件相当合理的事情。

但是,我想知道此功能还有哪些其他合法用途。它是一个相当有吸引力的工具,因为它有效地将实例化和注入此类对象的依赖关系的责任从代码中转移到框架中。

对于 Interface Builder,我很想知道使用此依赖注入功能的指南是什么?

4

2 回答 2

2

我使用的经验法则是,如果辅助对象与在 nib 中以某种方式定义的 UI 相关,则可以放入辅助对象——因此,要么是保存对元素引用的代理对象,要么是被触发的动作。

加载 nib 并通过 userinfo 字典传入已经创建的对象时,代理方法都会被连接,您可以选择与 nib 名称一起传入。

虽然我认为完全没有错,在一个纯粹的逻辑笔尖中,它会使用目标/动作系统来连接多个代理对象。这可能比在代码中进行所有接线更容易,尽管我没有看到在实践中使用过。

于 2009-07-15T16:45:30.020 回答
1

没有指导方针,你靠自己。

在teabot 的评论后编辑:看,对我来说,仍然不清楚 nib 内存管理是如何工作的。当我释放拥有 nib 的窗口控制器时,反序列化的对象真的会留下内存吗?

我想我在某处读到过,如果您在 nib 控件和窗口控制器之间使用绑定,则会出现泄漏,在某些情况下,我自己也会遇到与nib 相关的有趣烦恼

将一些与 nib 相关的错误作为错误的绑定键或缺少操作 IB 链接也很难追踪。

所以我更喜欢将 nib 内容保持在最低限度,通常是充分利用绑定(通常是数组控制器)所需的所有内容,但仅此而已。

[我有一个新问题的想法]

于 2009-07-15T16:43:57.387 回答