Iphone I';我正在重新制作一个小应用程序,以便在iOS上更好地使用MVC模式

Iphone I';我正在重新制作一个小应用程序,以便在iOS上更好地使用MVC模式,iphone,ios,objective-c,model-view-controller,Iphone,Ios,Objective C,Model View Controller,我知道也有类似的问题,我读了很多,但我仍然有一些问题 我有一个我之前制作的应用程序,没有为MVC设计。因此,我的控制器中有很多逻辑。我现在的问题基本上是,;什么去哪里 这基本上是我的理解, 视图-视图仅显示视图及其所有信息。它们接收由用户触发的事件并将其传递给控制器。这是视图所做的唯一事情 控制器-控制器从其视图接收事件并决定如何处理。如果它需要任何数据,它会询问它的模型,该模型会返回所需的数据。然后,控制器将数据传递到显示数据的视图。控制器不会对数据进行任何操作,当从模型接收数据时,数据已准备

我知道也有类似的问题,我读了很多,但我仍然有一些问题

我有一个我之前制作的应用程序,没有为MVC设计。因此,我的控制器中有很多逻辑。我现在的问题基本上是,;什么去哪里

这基本上是我的理解,

视图-视图仅显示视图及其所有信息。它们接收由用户触发的事件并将其传递给
控制器
。这是
视图
所做的唯一事情

控制器-控制器从其视图接收事件并决定如何处理。如果它需要任何数据,它会询问它的
模型
,该模型会返回所需的数据。然后,
控制器
将数据传递到显示数据的
视图
控制器
不会对数据进行任何操作,当从
模型
接收数据时,数据已准备就绪。控制器仅传递消息并将信息放入
视图中的正确元素中,它们不包含任何业务逻辑

模型-
模型
负责处理与其
控制器
相关的所有数据。它不直接与数据库通信,而是通过数据存储/dbhandler/等。在这里,操作数据的所有逻辑都发生了,当数据准备好呈现时,它将被传递给
控制器。像
loadStuff
saveStuff
这样的方法位于此处

这是iPhone中划分责任的正确方法吗


谢谢你的时间

模型视图控制器符合

模型-视图-控制器(MVC)设计模式为应用程序中的对象分配三个角色之一:模型、视图或控制器。模式不仅定义了对象在应用程序中扮演的角色,还定义了对象之间的通信方式。这三种类型的对象中的每一种都通过抽象边界与其他对象分开,并通过这些边界与其他类型的对象进行通信。应用程序中特定MVC类型的对象集合有时称为层,例如模型层

MVC是Cocoa应用程序良好设计的核心。采用这种模式的好处很多。这些应用程序中的许多对象往往更易于重用,它们的接口往往定义得更好。具有MVC设计的应用程序也比其他应用程序更容易扩展。此外,许多Cocoa技术和体系结构都基于MVC,并且要求您的自定义对象扮演MVC角色之一

模型对象

模型对象封装特定于应用程序的数据,并定义操作和处理该数据的逻辑和计算。例如,模型对象可能表示游戏中的角色或通讯簿中的联系人。一个模型对象可以与其他模型对象具有一对多关系,因此有时应用程序的模型层实际上是一个或多个对象图。作为应用程序持久状态一部分的大部分数据(无论持久状态存储在文件或数据库中)在数据加载到应用程序中后都应该驻留在模型对象中。因为模型对象表示与特定问题域相关的知识和专业知识,所以它们可以在类似的问题域中重用。理想情况下,模型对象不应与显示其数据的视图对象有明确的连接,并允许用户编辑该数据。它不应与用户界面和显示问题有关

通信:视图层中创建或修改数据的用户操作通过控制器对象进行通信,并导致创建或更新模型对象。当模型对象发生更改(例如,通过网络连接接收新数据)时,它会通知控制器对象,控制器对象会更新相应的视图对象

查看对象

视图对象是应用程序中用户可以看到的对象。视图对象知道如何绘制自身,并且可以响应用户操作。视图对象的一个主要用途是显示来自应用程序模型对象的数据,并启用对该数据的编辑。尽管如此,视图对象通常与MVC应用程序中的模型对象解耦

因为您通常会重用和重新配置它们,所以视图对象提供了应用程序之间的一致性。UIKit和AppKit框架都提供了视图类的集合,Interface Builder在其库中提供了几十个视图对象

通信:查看对象通过应用程序的控制器对象了解模型数据中的更改,并将用户发起的更改(例如,通过控制器对象在文本字段中输入的文本)与应用程序的模型对象进行通信

控制器对象

控制器对象充当应用程序的一个或多个视图对象与其一个或多个模型对象之间的中介。因此,控制器对象是一个管道,视图对象通过它了解模型对象中的更改,反之亦然。控制器对象还可以执行应用程序的设置和协调任务,并管理其他对象的生命周期


通信:控制器对象解释用户在视图对象中执行的操作,并将新的或更改的数据通信到模型层。当模型对象发生更改时,控制器对象会将新模型数据传送给视图对象,以便它们可以显示它。

是。但这总是取决于你在做什么,很多时候我发现视图和控件在ios.FYI中是紧密耦合的