gpt4 book ai didi

macos - 操作系统。文档和窗口 Controller 设计。如何与模型交互

转载 作者:行者123 更新时间:2023-12-03 17:21:29 25 4
gpt4 key购买 nike

我正在使用 Cocoa 开发个人 OS X 应用程序,并且在设计文档与其窗口 Controller 之间的交互时遇到一些问题。

这是我迄今为止所掌握的内容的摘要:

  • 一个文档(NSDocument子类),拥有“模型数据”,负责加载、保存数据到文件等。
  • 窗口 Controller (NSWindowController 子类),附加到文档,用于创建窗口,并负责将“模型数据”正确显示给用户。

现在,我的问题:

窗口 Controller 和文档如何交互?更具体地说:当 View 中发生事件(例如用户输入一些数据)时,窗口 Controller 如何到达模型?我看到两个选项:

  1. 窗口 Controller 负责更新模型中的数据。这看起来很简单,但是在访问模型的方式上产生了一些麻烦,因为文档是应该管理模型数据的文档。
  2. 窗口 Controller 向文档发送请求,文档负责更新模型。这让事情在概念上更加清晰,但它的实现感觉很奇怪:Window Controller 将调用 Document 的“applyChange:”方法,而 Document 将在 Model 上执行“applyChange:”;我几乎会复制从 View 到模型的所有内容,因为文档将充当模型的外观,而窗口 Controller 将充当文档的外观...感觉就像太多的外观!

我不知道该怎么办。

最佳答案

编辑:

NSDocument 的子类是模型 Controller (感谢您纠正我)。
更多信息:NSDocument from design perspective是内存中拥有并管理文档数据的对象。

enter image description here

要从窗口 Controller 访问您的文档,只需调用 @selector(document)

[self document]; //within windowController subclass

设计:

您遵循 MVC 模式和其他设计模式(主要是委托(delegate)和通知)。看看Lister app 。如果您无权访问,我已将其上传到 github另外一个精彩的例子(幕后)是 WWDC 2013 期间的 ShapeArt 应用程序演示(将您的 iOS 应用程序带到 OS X)。

也许你的问题更适合移至CodeReview

关于macos - 操作系统。文档和窗口 Controller 设计。如何与模型交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25353455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com