我正在使用NSDocument與其NSUndoManager組合。 我注意到有推可撤消的操作到的UndoManager時設置NSDocument updateChangeCount延遲:如何強制NSDocument isDocumentEdited YES將狀態推後NSUndoManager
[undoManager registerUndoWithTarget:self selector:@selector(applyUndoState:) object:state];
NSLog(@"Document.isEdited: %d", [self isDocumentEdited]);
這將顯示爲「0」,如果這個文件調用之前沒有被修改。 在此方法退出後的一段時間,似乎看起來非人調用updateChangeCount。 有沒有辦法強制undomanager更新文檔updateChangeCount? 我可以手動調用
if (![self isDocumentEdited])
[self updateChangeCount:NSChangeDone];
,但我不知道這是否會與UndoManager的交互安全。
爲什麼你在這個時候需要編輯狀態的文檔? – Volker
因爲我想在用戶點擊導航樹視圖時在無模式編輯器中提交更改。在這次調用之後,文檔需要立即保存,然後runloop進入下一個事件。我已經添加了周圍提到的工作,它似乎工作正常, –