私のMacアプリケーションは、次のようにメインスレッドからモデルに常に変更を加えるように設定されています。
- 別のスレッドで変更を加える(独自のコンテキストで)
- バックグラウンドで保存します。これにより、メインスレッドの親コンテキストに変更がプッシュされます
- UIの更新をトリガーする通知を投稿する
- スレッドが終了します
これは非常にうまく機能しますが、今、私が行った変更に対して元に戻るを有効にしたいです。どうすればこれを行うことができますか?私は2つの等しく悪いオプションしか見ません:
- ユーザーが元に戻したい場合に備えて、子コンテキストとその元に戻るマネージャーを保持します。これにより、元にできる元にできる数が制限されます。元に戻すためにコンテキストのスタックを手動で保持するのは奇妙に思えるからです。
- または、子コンテキストのUNDOマネージャーを親コンテキストのUNDOマネージャーに設定できますか?そのため、アプリケーションには常に1つのUNDOマネージャーのみが存在します。管理対象オブジェクトが異なるスレッド間で共有されることを想定していないため、これも間違っているように聞こえます。
誰かアイデアはありますか?
ありがとう。