有人告诉我awakeFromNib应该只被调用一次所以我很惊讶地看到它被我的WindowController调用了两次。我使用IB在MainMenu.xib中创建我的WindowController,但为了告诉它要加载哪个窗口xib文件我添加了一个init方法。
当我调试代码时,我发现第一次调用由此调用堆栈触发的awakeFromNib。所以基本上[MyWindowController init]触发了第一次调用。然后第二次调用我猜是因为加载了MainMenu.xib。这是对的吗?
有人可以对它投光吗?
顺便说一下,我在堆栈溢出时读了一些类似于我的其他问题,有些回答说可能是因为文件欠问题。所以我特别将窗口xib文件的文件所有者更改为NSApplication。但是仍然为MyWindowController调用了两次awakeFromNib。
答案 0 :(得分:1)
从你的问题我明白你在IB中实例化MyWindowController然后在MyWindowControllers init中你正在用initWithWindowNibName加载第二个nib:?如果是这样,您自然会收到两个awakeFromNib调用。一个在加载init方法中指定的NIB时,另一个在加载MainMenu.xib时加载。