3

I have some classes located on my Document such as NSNotificationCenter and NSUndoManager that I need access to from my subviews.

Right now I can access them by doing something like this:

NSUndoManager *undoManager = [[[[[self view] window] windowController] document] undoManager];

Is there a better approach I don't know about? Thanks.

4

1 回答 1

3

为什么视图需要担心撤消管理器?似乎那里可能需要进行一些重构。

通常,视图可能会在第一响应者中触发某些操作。然后,该操作将向上传递到响应者链,直到找到响应该操作的对象,例如窗口控制器或文档。“撤消”事件通常会影响数据模型,因此文档会处理类似的事情。当用户撤消先前的操作时,模型将恢复到先前的状态,并且视图层次结构会反映更改。

在您的情况下,是否可以将处理撤消管理器的责任转移到文档上?

这同样适用于通知中心。如果文档有通知中心,为什么视图试图使用它?您可以利用上述响应者链向文档发送消息吗?+defaultNotificationCenter如果更合适,您还可以使用默认通知中心。

于 2011-11-03T21:53:21.640 回答