1

間違った方向に進んでいるのかもしれませんが、私のアプリケーションにはNSMenuItem、メイン メニューにエントリを追加するロード可能なバンドルがあります。

すべてのバンドルをループして、追加するメニュー項目を決定し、それに応じて追加します。

問題は、そのようなコードをドキュメントベースのアプリケーションのどこに置くべきかということです。

最初はそれを NSDocument サブクラスのメソッドに入れましたが、これには、同じ項目を何度も-windowControllerDidLoadNib:繰り返すという望ましくない副作用がありました。これは、開いたドキュメントの数です (つまり、コードを配置するための実行場所ではありません)。 .nn

それで、コードをNSApplicationDelegate's-applicationDidFinishLaunching:メソッドに入れてみました。つまり、一度しか実行されませんが、実行前に (または少なくとも終了前に) ドキュメントが表示されて表示されるという問題に直面しています -applicationDidFinishLaunching:

起動時にメニュー項目をドキュメントベースのアプリケーションに動的に追加するコードを配置するのに一般的に適切な場所はどこですか?

4

1 に答える 1

1

この-windowControllerDidLoadNib:メソッドは、作成または開かれたドキュメントごとに呼び出されます。これはよりアプリケーション レベルであるため、ドキュメントでこれを気にする必要はありません。

-menuNeedsUpdate:デリゲート メソッドを使用して、表示時にメニューを更新するのはどうですか? そうすれば、アプリケーションは起動時に作成したリストを簡単に維持し、メニューを最新の状態に保つことができます。-awakeFromNibまたは、アプリのデリゲートのメソッドに入れることもできます。

于 2010-11-04T14:35:21.777 に答える