1

現在、MacOS X で glfw を使用してアプリケーションをプログラミングしています。私の唯一の問題は、アプリケーションが AppDelegate を使用せず、コマンド ライン ユーティリティのように main.cpp ファイルですべての初期化を行うことです。具体的に実装したい機能

- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename;

すでに plist ファイルにファイル拡張子を登録していて、それらを開こうとすると、「ドキュメント "Doc.xxx" を開けませんでした。MyApp は "xxx" 形式のファイルを開くことができません。

自分自身をデリゲートとして設定するシングルトンを作成しようとしましたが、関数を呼び出しません。クラスを作成して NSApplicationDelegate 関数を実装する可能性について誰かコメントできますか?

4

1 に答える 1

1

基本的に、OS からイベントを受信し、受信したイベントをポンプするためのコードは何もありません。

別のスタック オーバーフロー Q/A によると、解決策は NSApplication を手動で呼び出すことのようです。[NSApp run] はアプリが終了するまで返されないため、OpenGL レンダー ループをフックする場所を決定する必要があります。別の解決策は、カスタム NSApplication 置換を作成することです。http://www.cocoawithlove.com/2009/01/demystifying-nsapplication-by.html

ARCの変更を考慮して、この回答からほとんどそのままコピーしました:https://stackoverflow.com/a/2154666/1874323

@autoreleasepool { 
    AppDelegate * delegate = [[AppDelegate alloc] init];

    NSApplication * application = [NSApplication sharedApplication];
    [application setDelegate:delegate];
    [NSApp run]; // Note this never returns until the app finishes, so you need to decide where to hook your code into
}

いつものように、Apple の Web サイトからドキュメントを見つけることができます: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSApplication_Class/Reference/Reference.html

于 2014-08-28T11:46:48.397 に答える