メニューバーのアイコンのみで構成される macOS アプリケーションを開発しています。
メニューを含むxibファイル(MenuBarMenu.xib)と、それをメニューバーに配置する対応するコントローラー(MenuBarMenuController.swift)があります。
手動または Swinject を使用して、このコントローラーに依存関係を挿入したいと考えています。
これを行うには、AppDelegate からプログラムで xib ファイルをロードできると考えました。
func applicationDidFinishLaunching(_ aNotification: Notification) {
let controller = MenuBarMenuController(nibName: "MenuBarMenu", bundle: nil)
controller.someDependency = Test()
}
しかし、applicationDidFinishLaunching に到達する前に、コントローラーが NSApplication によって自動的にインスタンス化されているようです。
私が試したこと:
- info.plist から NSMainNibFile を削除しました
- info.plist から NSMainStoryboardFile を削除しました
- プロジェクト設定のメインインターフェイス設定をクリア
- 追加された LSUIElement = はい
- カスタム main.swiftを使用して、AppDelegate が確実に呼び出されるようにしました。
xib ファイルが存在する場合は、AppDelegate の前に呼び出されます。削除すると、実行時エラーは発生しません。
私の質問は、このコントローラーに依存関係を挿入するにはどうすればよいですか?