我的 Mac 应用程序设置为始终在主线程之外对其模型进行更改,如下所示:
- 在单独的线程中进行更改(具有自己的上下文)
- 在后台保存,它将更改推送到主线程中的父上下文
- 发布通知以触发 UI 更新
- 线程退出
这很好用,但现在我想为我所做的更改启用撤消。我该怎么做?我只看到两个同样糟糕的选择:
- 我保留子上下文,因此保留它的撤消管理器,以防用户想要撤消。这将限制我可以进行的撤消次数,因为为了撤消而手动保留一堆上下文似乎很奇怪。
- 或者,我可以将子上下文的撤消管理器设置为父上下文的撤消管理器吗?这样应用程序中将始终只有一个撤消管理器。这听起来也是错误的,因为托管对象不应该在不同的线程之间共享。
有没有人有任何想法?
谢谢。