3

我的 Mac 应用程序设置为始终在主线程之外对其模型进行更改,如下所示:

  1. 在单独的线程中进行更改(具有自己的上下文)
  2. 在后台保存,它将更改推送到主线程中的父上下文
  3. 发布通知以触发 UI 更新
  4. 线程退出

这很好用,但现在我想为我所做的更改启用撤消。我该怎么做?我只看到两个同样糟糕的选择:

  1. 我保留子上下文,因此保留它的撤消管理器,以防用户想要撤消。这将限制我可以进行的撤消次数,因为为了撤消而手动保留一堆上下文似乎很奇怪。
  2. 或者,我可以将子上下文的撤消管理器设置为父上下文的撤消管理器吗?这样应用程序中将始终只有一个撤消管理器。这听起来也是错误的,因为托管对象不应该在不同的线程之间共享。

有没有人有任何想法?

谢谢。

4

0 回答 0