在 "Save changes?" sheet 之前拦截 NSDocument 关闭

Intercepting NSDocument close before "Save changes?" sheet

我有一个基于 NSDocument 的应用程序,其中文档的 window 可能有子项 windows,需要在关闭文档之前查询更改。所以我尝试拦截文档的关闭window来做到这一点,但我找不到可靠的方法

我尝试为此使用 -[Document canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:],但显然这仅在文档发生更改时调用(由 -updateChangeCount 发出信号)。如果没有变化,则永远不会调用它。

我使用视图控制器的 viewWillDisappear 更新文档的其他尝试也失败了,因为现在无法在文档中注册任何更改,所以它们不会被保存 (canCloseDocumentWithDelegate:...此时已经调用了。)

解决这个问题的最佳方法是什么?

嗯,我想说的是,如果子 windows 包含在关闭文档之前必须请求的更改,则文档 更改。这应该反映在(主要)文件中 window。然而,...

可能 -shouldCloseWindow: 应该被调用,如果文档不包含更改,因此文档系统不要求保存自己。