ユーザーが画面上でオブジェクトをドラッグできるコアデータベースのUIKitアプリケーションがあります。オブジェクトがドラッグされている間、各touchesMoved:
イベントでその位置属性を更新します。ドラッグ操作の取り消しを一度にサポートするために、ドラッグの開始時に新しい取り消しグループを開始し、ユーザーが指を離したときにグループを終了します。
メモリを節約し、元に戻す操作を高速化するために、ドラッグ操作に属する元に戻るデータを合体させたいのですが、CoreDataではこれが困難です。問題はprocessPendingChanges
、各実行ループサイクルの最後に呼び出され、CoreDataにその反復で発生した位置変更の新しいUNDOレコードをファイルするように強制することです。ドラッグ操作では、このような元に戻すレコードを何百も簡単に蓄積できますが、最初のレコードを除くすべてが不要です。
Core Dataの魔法の組み込みアンドゥサポートを使い続ける方法はありますが、そのような重複したアンドゥレコードで貴重なメモリを無駄にすることはありませんか?元に戻す/やり直し操作全体でオブジェクトグラフの一貫性を維持する必要がないのは気に入っていますが、これらの継続的な属性の更新を正しく処理できないことは、目を見張るもののようです。