applicationDidFinishLaunching:从NIB加载NSDocument后执行

时间:2010-11-04 13:56:02

标签: cocoa macos menuitem nsdocument

也许我的方式错误,但在我的应用程序中,我有可加载的包,可以在主菜单中添加NSMenuItem条目。

我遍历所有捆绑包并确定要添加的菜单项,然后相应地添加它们。

现在问题是,这些代码应该放在基于文档的应用程序中?

最初我把它放在我的NSDocument子类'-windowControllerDidLoadNib:方法中,但是这会产生不希望的副作用,即重复相同的项n次,其中n是文档的数量我已经打开了(即它不是一个放置代码的运行场所)。

然后我尝试将代码放在NSApplicationDelegate的{​​{1}}方法中,这意味着它只运行一次,但我遇到的问题是文档弹出并显示 -applicationDidFinishLaunching:执行之前(或至少在它完成之前)。

通常在适当的位置放置代码,以便在启动时将菜单项动态添加到基于文档的应用程序中?

1 个答案:

答案 0 :(得分:1)

为每个创建/打开的文档调用-windowControllerDidLoadNib:方法。这是更多的应用程序级别,因此文档不应该担心这一点。

如何在显示时使用-menuNeedsUpdate:委托方法更新菜单?这样,您的应用程序可以简单地维护它在启动时创建的列表并保持菜单更新。或者,您可以将其放在app委托的-awakeFromNib方法中。