ここでの正解は私のユースケースには合いませんでしたが、質問はそうです。したがって、余分な答えです。
私の使用例:ドキュメント (開いているドキュメントの 1 つかもしれません) を閉じますが、アプリケーションは閉じません。
この場合 (執筆時点で、私が間違った場所を探していない限り)、ドキュメントはそれほど役に立ちません。
canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:
NSDocument サブクラスにオーバーライドを追加し、その中で super を呼び出しました。ドキュメントには、super を呼び出す必要があるかどうかは記載されていませんが、少しのログ記録から、システムがセレクターとコンテキストを提供していることがわかります。このメソッドは、ドキュメントが閉じられる直前に呼び出されます。
- (void) canCloseDocumentWithDelegate:(id)delegate shouldCloseSelector:(SEL)shouldCloseSelector contextInfo:(void *)contextInfo;
{
if ([self pdfController])
{
[[[self pdfController] window] close];
[self setPdfController: nil];
}
[super canCloseDocumentWithDelegate:delegate shouldCloseSelector: shouldCloseSelector contextInfo: contextInfo];
}
CocoaBuilderには、このメソッドに関する有益な議論がいくつかあります。このアプローチに欠点がある場合、またはこれを行うより良い方法がある場合は、コメントしてください。