プログラムでアプリケーションを終了する方法を探していました。多くのトピックで人々が を使用しているのを見つけましたNSApp terminate:id。
Xcodeterminate:idでは交差しています。このメソッドは非推奨ですか? アプリケーションを終了するために使用する必要がありますか? いいえの場合、それを行う正しい方法はどれですか?
更新:
交差していると言ったときの写真:

プログラムでアプリケーションを終了する方法を探していました。多くのトピックで人々が を使用しているのを見つけましたNSApp terminate:id。
Xcodeterminate:idでは交差しています。このメソッドは非推奨ですか? アプリケーションを終了するために使用する必要がありますか? いいえの場合、それを行う正しい方法はどれですか?
更新:
交差していると言ったときの写真:

terminateそれが非推奨であることはわかりません。コンパイラの警告の原因として考えられるのは、
[NSApp terminate:sender]
NSAppgeneral を返すため、コンパイラはどのメッセージが実際に意味idされているのかわかりません。terminate確かに、「定義へのジャンプ」を使用すると、Xcode は次の場所にジャンプします。
@protocol NSInputServiceProvider
...
- (void) terminate:(id)sender NS_DEPRECATED_MAC(10_0, 10_6);
しかし、同等のコードを使用する場合
[[NSApplication sharedApplication] terminate:sender];
その後、コンパイラの警告は消えます。
受信機を終了します。
- (void)terminate:(id)sender
差出人
通常、このパラメーターには、終了要求を開始したオブジェクトが含まれます。
通常、このメソッドは、ユーザーがアプリケーションのメニューから [終了] または [終了] を選択したときに呼び出されます。
このメソッドが呼び出されると、終了要求を処理するためにいくつかの手順が実行されます。最初に、アプリケーションのドキュメント コントローラ (存在する場合) に、ドキュメント内の未保存の変更を保存するように要求します。このプロセス中に、ドキュメント コントローラは、ユーザーからの入力に応じて終了をキャンセルできます。ドキュメント コントローラが操作をキャンセルしない場合、このメソッドはデリゲートのapplicationShouldTerminate:メソッドを呼び出します。applicationShouldTerminate:が返された場合NSTerminateCancel、終了プロセスは中止され、制御はメイン イベント ループに戻されます。メソッドが を返した場合、アプリケーションはメソッドが値orで呼び出されるまでモードNSTerminateLaterで実行ループを実行します。メソッドが を返した場合、このメソッドはNSModalPanelRunLoopModereplyToApplicationShouldTerminate:YESNOapplicationShouldTerminate:NSTerminateNowNSApplicationWillTerminateNotificationデフォルトの通知センターへの通知。
main()アプリケーションの関数に最終的なクリーンアップ コードを入れる必要はありません。実行されることはありません。クリーンアップが必要な場合は、デリゲートのapplicationWillTerminate:メソッドでそのクリーンアップを実行します。
OS X v10.0 以降で利用できます。
– run– stop:– applicationShouldTerminate:(NSApplicationDelegate)– applicationWillTerminate:(NSApplicationDelegate)– replyToApplicationShouldTerminate:NSApplicationWillTerminateNotificationNSApplication.h