gpt4 book ai didi

cocoa - Cocoa 基于文档的应用程序中的 MVC

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

我目前正在对我的应用程序进行重构和重组。我意识到模型和 View 及其 Controller 之间的一些分离已经减少,我希望进行一些清理。

我的应用程序中使用了几个关键类:NSPersistentDocument、NSWindowController 和模型类。

NSPersistentDocument 类充当“模型 Controller ”;它拥有模型类的一个实例,并管理与模型的所有交互。

NSWindowController 类充当“ View Controller ”;它拥有主窗口,并管理主窗口内 View 的交互。此类也是定义窗口的 nib 文件的文件所有者。

我在这里看到的问题是我没有真正的“ Controller ”。我当前的设计迫使模型 Controller 和 View Controller 相互了解。两者之间没有冥想对象,因此,我的模型和 View 没有明确分离,这使得支持多个 View 或模型成为一个问题。

我想将功能从现有的两个 Controller 转移到一个新的“ Controller ”类中,该类将充当模型 Controller 和 View Controller 之间的 Controller 。归根结底,这仍然只是MVC设计模式,只是结构多了一点。

但是,我很难弄清楚这如何适合 Cocoa 基于文档的应用程序架构。

我最大的问题是在哪里以及如何创建这个新的 Controller 对象?这如何适应 Cocoa 的架构?我是否在对抗 Cocoa 的架构,是否有更好的方法来做到这一点?

谢谢。

最佳答案

拥有“模型 Controller ”和“ View Controller ”的强烈本能。这是一个很好的心理分类法,可以解释 M 和 V 通常如何联系在一起。但正如您所注意到的,您仍然可以在 MVC 中使用纯“C”将整个操作联系在一起。

如果您正在谈论一个 Controller ,则对于应用程序:将(big-C) Controller 视为从应用程序的 main() 函数中衍生出来的东西——在较早的 Cocoa 教程中,该对象通常称为 AppController。它可能是 UIApplication 的委托(delegate),也可能不是,但如果不是,您应该考虑在项目中应用程序委托(delegate)的 applicationDidFinishLaunching: 方法中创建这样的主 Controller 。然后,该 AppController 可以设置(并拥有)模型对象并设置(并拥有) Root View Controller ,您的 UI 将从中产生。

如果您正在谈论某个有多个实例的中介组件,文档架构中的每个模型/ View “对”都有一个实例,那么也可以制作类似的东西。 DocumentController 是您想要的名称,尽管 Cocoa 已经有一个可能反射(reflect)也可能不反射(reflect)您需要的功能类型的名称。 “DocumentManager”是另一个候选名称。

关于cocoa - Cocoa 基于文档的应用程序中的 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2276498/

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