だから、ここに私の場合があります:
非標準のドキュメント ベースのアプリケーションを開発しており、いずれかのドキュメントに未保存の変更がある場合に終了を中止するシナリオを処理したいと考えています。
私の最初のアイデアは次のとおりです。
- ユーザーがアプリケーションを終了しようとします (
"Quit XXXXX"
メニュー項目または"X"
ボタンをクリックして) - 変更されたドキュメントはありますか?
- いいえの場合: 終了
- YES の場合: 変更されていないドキュメントがあることをユーザーに通知します。彼が続行したい場合は、終了します。そうでなければ、終了をキャンセルします。
そこで、デリゲート方式で行うことにしました。
私の Application delegateでは、次を実装しました。
-windowToClose:
(トリガーNSWindowWillCloseNotification
)applicationShouldTerminate:
applicationShouldTerminateAfterLastWindowClosed:
今、それが私が考えていることです。applicationShouldTerminate:
メソッド内:
NSTerminateNow
変更されたドキュメントが存在しない場合に返すNSTerminateCancel
変更されたドキュメントがある場合に返します。その場合、アラート シートなどをポップアップ表示し、ユーザーが終了したいことを確認したら、[NSApp terminate:nil];
それは正しい方法ですか?
助言がありますか?