当应用程序退出时,NSDocument 的 isDocumentEdited 方法总是 returns false
When Application quits, NSDocument's isDocumentEdited method always returns false
在 document-based 应用程序中,文档中的任何更改都由
发出信号
[self updateChangeCount: NSChangeDone];
任何时候,在调试时,只要文档已被编辑,[document isEdited]
returns TRUE。文档的 window 在文档名称旁边显示 "Modified"。当我退出应用程序时,我的应用程序委托会检查所有打开的文档,并使用此循环检查它们是否已被编辑:
NSUInteger needsSaving = 0;
while (count--) {
NSWindow *window = [windows objectAtIndex:count];
Document *document = [Document documentForWindow:window];
if (document && [document isDocumentEdited]) needsSaving++;
}
似乎对于任何文档——修改与否——
[document isDocumentEdited];
总是 returns 错误!以至于无法调用审核change/save流程。如果我检查 [window isDocumentEdited]
,它也会 returns FALSE 尽管 "Modified" 写在 window.
的标题栏中
当应用程序退出时,更改最终会(自动)保存,但不会通知用户。这是一个非常令人不安的行为!
知道什么可以解释 isDocumentEdited
布尔值在进入此过程之前在某处重置为 FALSE 吗?
我检查了所有代码,看看是否有任何 [self updateChangeCount: NSChangeCleared]
可能是 运行 的地方,但事实并非如此。我可以在我的 Document 子类中使用自定义 updateChange 计数系统来避免这个问题,但我宁愿使用 built-in 过程。
在 Mojave 下使用 Xcode 10,目标为 10.12
isDocumentEdited 被记录为“指示文档是否有未保存更改的值”。如果启用了 autosavesInPlace,则可能会发生此行为。应用程序退出时不会有未保存的更改。
在 document-based 应用程序中,文档中的任何更改都由
发出信号[self updateChangeCount: NSChangeDone];
任何时候,在调试时,只要文档已被编辑,[document isEdited]
returns TRUE。文档的 window 在文档名称旁边显示 "Modified"。当我退出应用程序时,我的应用程序委托会检查所有打开的文档,并使用此循环检查它们是否已被编辑:
NSUInteger needsSaving = 0;
while (count--) {
NSWindow *window = [windows objectAtIndex:count];
Document *document = [Document documentForWindow:window];
if (document && [document isDocumentEdited]) needsSaving++;
}
似乎对于任何文档——修改与否——
[document isDocumentEdited];
总是 returns 错误!以至于无法调用审核change/save流程。如果我检查 [window isDocumentEdited]
,它也会 returns FALSE 尽管 "Modified" 写在 window.
当应用程序退出时,更改最终会(自动)保存,但不会通知用户。这是一个非常令人不安的行为!
知道什么可以解释 isDocumentEdited
布尔值在进入此过程之前在某处重置为 FALSE 吗?
我检查了所有代码,看看是否有任何 [self updateChangeCount: NSChangeCleared]
可能是 运行 的地方,但事实并非如此。我可以在我的 Document 子类中使用自定义 updateChange 计数系统来避免这个问题,但我宁愿使用 built-in 过程。
在 Mojave 下使用 Xcode 10,目标为 10.12
isDocumentEdited 被记录为“指示文档是否有未保存更改的值”。如果启用了 autosavesInPlace,则可能会发生此行为。应用程序退出时不会有未保存的更改。