想象一下,托管对象具有NSTextStorage
类型的瞬态属性。这将在保存时存档为二进制NSData
对象。在编辑时,我交换textStorage
的{{1}},以便所有更改直接进入文本存储。这样,我可以更新与某些文本位置相关的其他托管对象,而不会使上下文处于不一致状态,并且使用相同文本存储的其他UI元素会立即更新。
问题是托管对象上下文的NSTextView
不知道如何处理undo / redo上的文本存储。我认为这是因为撤消操作由文本视图处理。
所以我想我可以在每次更改时序列化/归档文本存储,并用未归档的内容替换文本存储内容。即使使用较长的文本文档,我也对它进行了测试,并且它不是Mac上的真正瓶颈。但是如何让撤消管理器使用它呢?或者有一种完全不同的方式让它发挥作用。
我已将示例项目放在http://cl.ly/3B1P0r2P1i0m
上