2

私はCocoa(GUI)アプリケーションを実行する方法を工夫しました。通常のダブルクリックか、 またはCLIから。GUIまたはコマンドラインから同じアプリケーションを起動するより良い方法はありますか?

は私がアプリをダブルクリック(GUI)から起動したときに、それはの引数の個数(のargc )を返すことに気づい2.

しかし、CLIから起動した場合には、を持っていますargc 1.私は自分自身で何の主張もしない限り。

これは、アプリがどのように起動されたかを決定するためにを使用できることを意味します。他の場合はです。

これは、引数を入れる必要がないので、これは私のアプリにとってうまくいきます。

しかし、もっと良い方法があるのだろうかと思った。ここで

main.mに

int main (int argc, const char * argv[]) { 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    //This determins if the app is launched from the command line or app itself is opened. 

    if (argc == 1) { 
     //app was run from CLI 
     // Create a object 
     MyClass *mMyClass; 
     mMyClass = [[MyClass alloc] init]; 
     // Read the Buffer 
     [mMyClass readBuffer]; 

     // Write out file on disk 
     [mMyClass createFile]; 
     [mMyClass doMoreStuff]; 

     [mMyClass release]; 
     mMyClass = nil; 

    return 0; 
    } else { 

    //app was doubled click, (Opened) 

    return NSApplicationMain(argc, (const char **) argv); 

    ; 
    // */ 
    // return NSApplicationMain(argc, (const char **) argv); 
    } 
    [pool drain]; 
} 

多くのおかげでコードの例です。 M

+0

私にとって、これは興味深い質問です。 1票アップ。 –

+0

2件のコメントがあります。 1 /将来あなたのコードを適切にフォーマットしてください。 SOフォーマッタはタブをあまり好きではありません。 2 /技術的には、オートリリースプールをコマンドラインブランチに割り当てて排水するだけで済みます。 'NSApplicationMain'はそれ自身のプールを作成します。 – JeremyP

+0

JeremyP。 1 /それをどうやって行うのか、フォーマットの問題が何であったかは分かりません。私はしませんでした。頭をアップしていただきありがとうございます。 2 /意味のある自動解放プールについて指摘していただきありがとうございます。 – markhunte

答えて

関連する問題