簡體   English   中英

當應用程序退出時,NSDocument 的 isDocumentEdited 方法總是返回 false

[英]When Application quits, NSDocument's isDocumentEdited method always returns false

在基於文檔的應用程序中,文檔中的任何更改都由

[self updateChangeCount: NSChangeDone];

在任何時候,調試時,只要文檔已被編輯, [document isEdited]返回 TRUE。 除了文檔名稱之外,文檔的窗口還顯示“已修改”。 當我退出應用程序時,我的應用程序委托檢查所有打開的文檔,並使用以下循環檢查它們是否已被編輯:

NSUInteger needsSaving = 0;
while (count--) {
    NSWindow *window = [windows objectAtIndex:count];
    Document *document = [Document documentForWindow:window];
    if (document && [document isDocumentEdited]) needsSaving++;
}

似乎對於任何文件——無論是否修改—— [document isDocumentEdited]; 總是返回 FALSE! 因此無法調用審核更改/保存過程。 如果我檢查[window isDocumentEdited] ,它也會返回 FALSE,盡管“Modified”寫在窗口的標題欄中。

當應用程序退出時,更改最終會(自動)保存,但不會通知用戶。 這是一種非常令人不安的行為!

知道什么可以解釋isDocumentEdited布爾值在進入此過程之前在某處重置為 FALSE 嗎?

我檢查了所有代碼,看看是否有任何[self updateChangeCount: NSChangeCleared]可以在某處運行,但事實並非如此。 我可以在我的 Document 子類中使用自定義 updateChange 計數系統來規避這個問題,但我更願意使用內置過程。

在 Mojave 下使用 Xcode 10,目標為 10.12

isDocumentEdited 被記錄為“指示文檔是否有未保存更改的值”。 如果啟用了 autosavesInPlace,則可能會發生該行為。 退出應用程序時不會有未保存的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM