プログラムでアプリケーションを終了する方法を探していました。多くのトピックで人々が を使用しているのを見つけましたNSApp terminate:id
。
Xcodeterminate:id
では交差しています。このメソッドは非推奨ですか? アプリケーションを終了するために使用する必要がありますか? いいえの場合、それを行う正しい方法はどれですか?
更新: 交差していると言ったときの写真:
プログラムでアプリケーションを終了する方法を探していました。多くのトピックで人々が を使用しているのを見つけましたNSApp terminate:id
。
Xcodeterminate:id
では交差しています。このメソッドは非推奨ですか? アプリケーションを終了するために使用する必要がありますか? いいえの場合、それを行う正しい方法はどれですか?
更新: 交差していると言ったときの写真:
terminate
それが非推奨であることはわかりません。コンパイラの警告の原因として考えられるのは、
[NSApp terminate:sender]
NSApp
general を返すため、コンパイラはどのメッセージが実際に意味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
で実行ループを実行します。メソッドが を返した場合、このメソッドはNSModalPanelRunLoopMode
replyToApplicationShouldTerminate:
YES
NO
applicationShouldTerminate:
NSTerminateNow
NSApplicationWillTerminateNotification
デフォルトの通知センターへの通知。
main()
アプリケーションの関数に最終的なクリーンアップ コードを入れる必要はありません。実行されることはありません。クリーンアップが必要な場合は、デリゲートのapplicationWillTerminate:
メソッドでそのクリーンアップを実行します。
OS X v10.0 以降で利用できます。
– run
– stop:
– applicationShouldTerminate:
(NSApplicationDelegate)– applicationWillTerminate:
(NSApplicationDelegate)– replyToApplicationShouldTerminate:
NSApplicationWillTerminateNotification
NSApplication.h