gpt4 book ai didi

cocoa - applicationDidFinishLaunching : executing after NSDocument is loaded from NIB

转载 作者:行者123 更新时间:2023-12-03 17:16:55 26 4
gpt4 key购买 nike

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

我循环遍历所有包并确定要添加哪些菜单项,然后相应地添加它们。

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

最初,我将其放入 NSDocument 子类的 -windowControllerDidLoadNib: 方法中,但这会产生重复相同项目 n 次的不良副作用,其中 n 是我打开的文档数量(即,它不是放置代码的 run-one 位置)。

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

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

最佳答案

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

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

关于cocoa - applicationDidFinishLaunching : executing after NSDocument is loaded from NIB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4097357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com