9

プログラムでアプリケーションを終了する方法を探していました。多くのトピックで人々が を使用しているのを見つけましたNSApp terminate:id

Xcodeterminate:idでは交差しています。このメソッドは非推奨ですか? アプリケーションを終了するために使用する必要がありますか? いいえの場合、それを行う正しい方法はどれですか?

更新: 交差していると言ったときの写真: ここに画像の説明を入力

4

2 に答える 2

19

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];

その後、コンパイラの警告は消えます。

于 2013-04-06T16:41:47.003 に答える
1

いいえ、非推奨ではありません:


終了:

受信機を終了します。

- (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:
  • NSApplicationWillTerminateNotification

関連サンプルコード

  • ブラストアプリ
  • PreLoginAgents

で宣言

NSApplication.h

于 2013-04-06T16:40:42.013 に答える