我被告知 awakeFromNib 应该只被调用一次,所以我很惊讶地看到它被我的 WindowController 调用了两次。我使用 IB 在 MainMenu.xib 中创建 WindowController,但为了告诉它要加载哪个窗口 xib 文件,我向其中添加了一个 init 方法。
当我调试代码时,我发现此调用堆栈触发了对 awakeFromNib 的第一次调用。所以基本上 [MyWindowController init] 触发了第一个调用。然后我猜第二个调用是因为加载 MainMenu.xib。这是正确的吗?
有人可以解释一下吗?
顺便说一句,我在堆栈溢出上读到了一些与我类似的其他问题,一些答案说这可能是因为文件欠问题。所以我特地将window xib文件的文件所有者更改为NSApplication。但是 MyWindowController 的 awakeFromNib 仍然被调用了两次。
最佳答案
从你的问题中我了解到你正在IB中实例化MyWindowController,然后在MyWindowControllers init中你正在使用initWithWindowNibName加载第二个 Nib :?如果是这样,您自然会收到两个 awakeFromNib 调用。一个是在加载 init 方法中指定的 NIB 时,另一个是在加载 MainMenu.xib 时。
关于cocoa - awakeFromNib 被我的 WindowController 调用了两次,对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7496166/