これは私のケースです:Cocoaアプリケーションの終了を正しく処理する方法は?
私は非標準のドキュメントベースのアプリケーションを開発していますが、文書の中にまだ変更が保存されていない場合、終了を中止するシナリオを処理したいと思います。
私の最初のアイデアは、次のとおりです。
- ユーザーは、(
"Quit XXXXX"
メニュー項目を介して、または"X"
ボタンをクリックすることにより、どちらかの)アプリケーションを終了しようとし - 任意の変更されたドキュメントはありますか?
- いいえの場合:終了
- はいの場合:変更されていないドキュメントがあることをユーザーに通知します。もし彼が進めたいなら、やめてください。それ以外の場合はキャンセルを終了します。
だから私は委任状にすることにしました。私のアプリケーションデリゲートで
は、私が実装しました:
- (
NSWindowWillCloseNotification
でトリガ)-windowToClose:
applicationShouldTerminate:
applicationShouldTerminateAfterLastWindowClosed:
は今、それは私が考えているものです。 applicationShouldTerminate:
方法で:
- 戻り
NSTerminateNow
変更されたドキュメントがある場合は何も変更された文書は、リターンNSTerminateCancel
- を存在しない場合。その場合は、アラートシートなどをポップアップして、ユーザーが終了したいと確認した場合は、
[NSApp terminate:nil];
これは正しい方法ですか?
提案がありますか?
いいアイデア。ただし、ここではYES-NOアラートシート(http://snippet.mx/Ra8E)に使用しているコードを示します。どのように私はそれが同じ関数内に返されるようにすることができますか? –