どのように私は、アプリケーション自体の中から終了するには、私のCocoaアプリケーションを伝えることができますか?

StackOverflow https://stackoverflow.com/questions/1659177

  •  11-09-2019
  •  | 
  •  

質問

私は自分自身を終了するには、私のCocoaアプリケーションを伝えるための良い方法を探しています。残りは、これは、生産コードのために使用されることはありませんのでご安心ください。私はただ一つのテストを実行し、デバッグ中のアプリケーションを閉じるための簡単な方法を探しています。

私はexit(0);アプリを閉じますが、それは通常のアプリケーションの終了手続きのすべてをバイパスし、私は場所でそれらのすべてを維持したいことを見出した。

基本的に私は、ユーザーがメニューから「終了」引っ張られたかのようなものが仕事をしたいが、私は私のテストを終えた後、私はそれが自動的に行わたい。

私のコードは、現在、次のようになります:

#if (SUPERFANCY_TESTING_MODE)
    [self doSomething];
    exit(0); // <-- I need something better to go here
#endif
役に立ちましたか?

解決

あなたはかなり残りは、あなたのアプリが時間の少なくとも一部を殺さしようとしていることを保証することができます。このように、exit(0);のような終了を防御の要求されます。

しかし、NSApplicationのは-terminate:メソッドを実装します。

[NSApp terminate: nil];は、あなたがやりたいはずます。

Iは、一般的に、イベントループを通る次のパスの先頭に発生することを強制する0.0の遅延で-performSelector:afterDelay:経由で投稿お勧めします。

例:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top