NSDocument
としてサブクラス化するドキュメントベースの Cocoa アプリケーションがありますMyDocument
。それぞれMyDocument
が個別のバックグラウンド プロセスを ( としてNSTask
) 管理します。NSTask
対応するMyDocument
アプリケーションが閉じたとき、またはアプリケーション全体が終了したときに、が終了することを確認したいと思います。
後者については、ドキュメントを監視させます。前者については、メソッドNSApplicationWillTerminateNotification.
をオーバーライドします。close
-(void)close {
// Cleanup code here
[super close];
}
dealloc
(ちなみに、プロジェクトは GC されているため、クリーンアップ コードをメソッドに入れることはできません。)
問題は次のとおりです。 を開き、MyDocument
保存されていない変更を加えてから cmd-Q を押すと、close
メソッドが2 回呼び出されます。デバッガーからのコール チェーンは次
のとおり[MyDocument close]
です。(その呼び出しの後、アプリケーションは終了します)。[NSDocument close]
[NSWindowController _windowDidClose]
[MyDocument close]
これは予想される動作ですか?もしそうなら、ドキュメント固有のリソースを解放するより良い方法はありますか? それとも、close
安全に複数回実行できるようにする必要がありますか?