想象一个具有 type 瞬态属性的托管对象NSTextStorage
。这会在保存时存档到二进制NSData
对象中。在编辑时,我交换了所有的更改textStorage
,NSTextView
因此所有更改都直接进入文本存储。这样,我可以更新与某些文本位置相关的其他托管对象,而不会使上下文处于不一致状态,并且使用相同文本存储的其他 UI 元素会立即更新。
问题是托管对象上下文undoManager
不知道如何处理撤消/重做时的文本存储。我认为这是因为撤消操作是由文本视图处理的。
所以我想我可以在每次更改时序列化/存档文本存储,并用未存档的内容替换文本存储内容。即使是较长的文本文档,我也已经对其进行了测试,这在 Mac 上并不是真正的瓶颈。但是如何让撤消管理器使用它呢?或者有没有完全不同的方法让它工作。