Objective c 代理是否应该通过控制器获取模型?
试图弄明白MVC的概念 我有一个NSCustomView,它实现了drawRect:,它基于自定义视图的控制器中指定的委托。我的问题是,代理是应该指向模型的控制器,还是可以将代理直接指向模型Objective c 代理是否应该通过控制器获取模型?,objective-c,cocoa,model-view-controller,Objective C,Cocoa,Model View Controller,试图弄明白MVC的概念 我有一个NSCustomView,它实现了drawRect:,它基于自定义视图的控制器中指定的委托。我的问题是,代理是应该指向模型的控制器,还是可以将代理直接指向模型 NSCustomView是否应该请求NSWindowController请求模型的控制器请求模型获取数据?“适当”的MVC设计似乎有太多的层。通常,代理是视图控制器,或者适合控制器类型的角色。如果这不是你的情况,那么你可以更详细地解释发生了什么事情。阅读。虽然可以让模型和视图直接通信,但在Cocoa版本的M
NSCustomView是否应该请求NSWindowController请求模型的控制器请求模型获取数据?“适当”的MVC设计似乎有太多的层。通常,代理是视图控制器,或者适合控制器类型的角色。如果这不是你的情况,那么你可以更详细地解释发生了什么事情。阅读。虽然可以让模型和视图直接通信,但在Cocoa版本的MVC中,它们总是通过控制器通信。如果我应该在m V和C之间完全分离。应用程序中的什么应该“拥有”m部件?C拥有M吗?是什么创造了M部分?现在我让我的C创建M,但这会造成问题,因为我正在尝试归档数据,这不太好,因为它也归档了C。在这方面你有相当多的自由,这在很大程度上取决于你的应用程序设计。例如,iOS应用程序通常没有任何文档感,因此该模型可能由应用程序委托创建,然后根据需要传递给控制器。桌面应用程序更有可能使用文档,在这种情况下,可能是文档创建了模型,而应用程序委托只是响应新的和打开的命令创建文档。因此,在桌面示例中,文档是否也创建了视图实例?我好像错过了什么。我查看了TextEdit示例,但没有看到MVC是如何分配的以及它们保存在哪里的。我有一个“基于文档”的桌面应用程序。但每个项目都由多个NSWindowController组成。请参阅文本编辑源中的
-[Document makeWindowController]
。它实例化了DocumentWindowController,该控制器从nib加载窗口。这就是我的看法。然后查看-[Document init]
和-[Document readFromURL:ofType:encoding:ignoreRTF:][/code>,注意documents NSTextStorage对象是如何创建和填充数据的;这就是模型。文档本身和文档窗口控制器扮演着控制器的角色,这真的很奇怪,因为NSDocument(模型/数据)拥有WindowController(控制器),而WindowController又拥有nib实例(视图)。