0

有人告诉我 awakeFromNib 应该只调用一次,所以我很惊讶地看到它为我的 WindowController 调用了两次。我使用 IB 在 MainMenu.xib 中创建我的 WindowController,但是为了告诉它要加载哪个窗口 xib 文件,我向它添加了一个 init 方法。

当我调试代码时,我发现这个调用堆栈触发了对 awakeFromNib 的第一次调用。所以基本上 [MyWindowController init] 触发了第一次调用。然后我猜第二个调用是因为加载 MainMenu.xib。那是对的吗 ?

有人可以对此有所了解吗?

顺便说一句,我在堆栈溢出上阅读了一些与我类似的其他问题,一些答案说这可能是因为文件 owen 问题。所以我特别把window xib文件的文件所有者改成了NSApplication。但是 awakeFromNib 仍然为 MyWindowController 调用了两次。

在此处输入图像描述

4

1 回答 1

1

根据您的问题,我了解到您在 IB 中实例化 MyWindowController ,然后在 MyWindowControllers init 中使用 initWithWindowNibName 加载第二个 nib:? 如果是这样,您自然会收到两个 awakeFromNib 调用。一个在加载 init 方法中指定的 NIB 时,另一个在加载 MainMenu.xib 时。

于 2011-09-21T09:28:30.423 回答