У меня есть приложение UIKit на основе Core Data, которое позволяет пользователю перетаскивать объекты по экрану.Во время перетаскивания объекта я обновляю его атрибут позиции при каждом событии touchesMoved:
.Чтобы поддержать отмену операции перетаскивания за один раз, я начинаю новую группу отмены в начале перетаскивания и заканчиваю группу, когда пользователь поднимает палец.
Чтобы сохранить память и быстро отменить операции,Я хочу объединить данные отмены, относящиеся к операции перетаскивания, но Core Data делает это трудным.Проблема в том, что processPendingChanges
вызывается в конце каждого цикла цикла выполнения, и это заставляет Core Data подать новую запись отмены для изменения положения, которое произошло в этой итерации.Операция перетаскивания может легко накапливать сотни таких записей отмены, все из которых, кроме первой, не нужны.
Есть ли способ для меня, чтобы продолжать использовать волшебную встроенную поддержку отмены Core Data, но без потери драгоценной памятина таких дубликатах отменить записи?Мне нравится, что мне не нужно заботиться о поддержании согласованности графов объектов при операциях отмены и повторения, но неспособность правильно обрабатывать эти непрерывные обновления атрибутов, похоже, является демонстрацией.