cocoa - awakeFromNib 被我的 WindowController 调用了两次,对吗?

标签 cocoa nswindowcontroller awakefromnib

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

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

有人可以解释一下吗?

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

enter image description here

最佳答案

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

关于cocoa - awakeFromNib 被我的 WindowController 调用了两次,对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7496166/

相关文章:

Cocoa:创建具有可变数量界面元素的窗口

ios - UITableViewCell 在 subview 性能问题中调用 .layer.maskToBounds = YES

ios - 在 awakeFromNib() 上 - 错误实例成员 'button' 不能在类型 'CustomView' 上使用

iphone - viewDidLoad 和 awakeFromNib 时序

xcode - 检查进程是否正在从 cocoa 应用程序中运行

objective-c - 如何设置光标处的字体?

objective-c - NSPredicate谓词WithFormat : variable substitution

objective-c - 将迭代器保存在 NSMutableDictionary 上

objective-c - NSWindowController执行关闭: method not work

cocoa - 如何在基于 NSDocument 的 Cocoa 应用程序中使用 NSViewController