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安全に複数回実行できるようにする必要がありますか?