这里的正确答案不适合我的用例,但问题确实如此。因此,额外的答案。
我的用例:关闭一个文档(可能是打开的几个文档之一)但不关闭应用程序。
在这种情况下(在撰写本文时,除非我只是在错误的地方寻找),文档并没有它应有的帮助。
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上有一些关于这个方法的有用的讨论。如果这种方法有缺点或更好的方法,请发表评论。