【发布时间】:2010-08-15 16:52:09
【问题描述】:
我已将 NSWindowController 的自定义子类添加到我的 Cocoa 项目中,并将我的子类的一个实例添加到我的应用程序的 nib 中。我希望在加载 nib 时看到我对 -initWithCoder: 方法的覆盖,但事实并非如此。为了调试,我添加了一个常规的 -init 方法并在其上设置了一个断点——果然,我在加载 nib 时遇到了断点。
这实际上可以使一些事情对我来说更简单(例如设置 windowNibName),但我不明白为什么 Cocoa 会这样。我读过的所有文档都表明 -initWithCoder: 是我应该覆盖的地方。为什么这个案例有什么不同?
【问题讨论】:
-
为什么要把窗口控制器放到笔尖里?通常,您使用窗口控制器来加载 nib,并且窗口控制器将成为 nib 内容的文件所有者。
-
这个特殊的窗口控制器用于下拉到我的应用程序主窗口的工作表。通过使其成为它加载的 nib 的文件所有者,以及我的 MainMenu nib 中的顶级对象,我可以轻松地从任一位置建立到它的 IB 连接。它就像一个魅力。 :-)