我有一个基于核心数据的 UIKit 应用程序,它允许用户在屏幕上拖动对象。在拖动对象时,我会在每个touchesMoved:
事件上更新其位置属性。为了支持一次性撤消拖动操作,我在拖动开始时启动了一个新的撤消组,并在用户抬起手指时结束该组。
为了节省内存并使撤消操作快速,我想合并属于拖动操作的撤消数据,但 Core Data 使这变得困难。问题是processPendingChanges
在每个运行循环周期结束时调用它,它会强制 Core Data 为该迭代中发生的位置更改归档一个新的撤消记录。一个拖拽操作可以很容易地累积数百条这样的撤销记录,除了第一个之外,所有这些都是不必要的。
有没有办法让我继续使用 Core Data 神奇的内置撤消支持,但又不会在重复的撤消记录上浪费宝贵的内存?我喜欢我不需要关心在撤消/重做操作之间维护对象图的一致性,但无法正确处理这些连续的属性更新似乎是一个阻碍。