applicationDidFinishLaunching

applicationDidFinishLaunching

也许我走错路了,但是在我的应用程序中,我有可加载的包,这些包将NSMenuItem条目添加到主菜单。

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

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

最初,我将其放在NSDocument子类的-windowControllerDidLoadNib:方法中,但这具有重复相同项目n次的不良影响,其中n是我打开的文档数(即,不是一处放置代码)。

因此,然后我尝试将代码放入我的NSApplicationDelegate-applicationDidFinishLaunching:方法中,这确实意味着它只能运行一次,但是我遇到了一个问题,即文档弹起并在-applicationDidFinishLaunching:执行之前显示(或至少在在完成之前)。

通常,在启动时放置将菜单项动态添加到基于文档的应用程序中的代码的正确位置在哪里?

最佳答案

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

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

10-08 18:43