Iphone 如何让每个类彼此交互?

Iphone 如何让每个类彼此交互?,iphone,model-view-controller,Iphone,Model View Controller,我需要帮助理解iPad/iPhone环境中的MVC模型。不知怎的,我读了好几遍也不明白 假设我想构建一个小应用程序来存储图像位置和每个图像的注释。我可能会创建一个“SZImage”类来存储这些信息。除了setter和getter之外,我还需要实现其他方法吗?模型的作用是什么,它可以实现什么方法,不能实现什么 之后,我需要设置显示图像的界面。所以我需要创建另一个名为“SZImageView”的类。这个班的角色是什么?它是在iPhone窗口上画图,还是我把它留给控制器来做。如果我让控制器绘制,那么为

我需要帮助理解iPad/iPhone环境中的MVC模型。不知怎的,我读了好几遍也不明白

假设我想构建一个小应用程序来存储图像位置和每个图像的注释。我可能会创建一个“SZImage”类来存储这些信息。除了setter和getter之外,我还需要实现其他方法吗?模型的作用是什么,它可以实现什么方法,不能实现什么

之后,我需要设置显示图像的界面。所以我需要创建另一个名为“SZImageView”的类。这个班的角色是什么?它是在iPhone窗口上画图,还是我把它留给控制器来做。如果我让控制器绘制,那么为什么我要创建这个类

如果我需要控制器作为模型和视图之间的桥梁,那么应该创建一个名为“SZImageViewController”的类。这个班应该做什么


最后,这是一个让我困惑了很长时间的问题。如何使用其他类中的方法将窗口添加到AppDelegate?类内实例之间的交互是如何完成的。因为我看到AppDelegate通常非常简短。

MVC是模型-视图-控制器,它意味着将项目分层

模型用于数据库集成和操作

视图是您的设计部分。在iphone中使用Xibs

控制器用于具有函数形式的逻辑指令

因此,在你的应用程序中,你需要保存你的图像位置和评论,这样你就可以将你的XIB放在文件夹中的资源中

您的逻辑意味着.h和.m文件位于单独的文件夹中

您的数据访问层意味着NSManeged对象继承类,并且您使NSObject类可以与NSMangeObject类直接交互,并且您的NSObject类可以与视图控制器类交互

它用于在gui、数据库功能和业务逻辑之间创建抽象

模型视图控制器类类别和示例 在模型-视图-控制器(MVC)中,每个类都应该设计为适合这三个类别中的一个。这样做可以避免类耦合,并创建更灵活的代码

模型类。 此类别的类应表示应用程序的数据模型。如果应用程序是一个游戏,那么类代表玩家、敌人、关卡布局、保存的数据(如记分板)等等。但这些类应该仅限于保存表示这些对象的数据及其背后的逻辑。例如,如果它是一个赛车游戏,“Car”类应该是模型的一部分,它应该代表汽车的所有属性(例如速度、加速度、转弯等)。该类还应包括车辆的所有必要逻辑,例如确定车辆应如何移动的逻辑(如加速和制动、转弯),以及发生碰撞时应发生的情况等。此“汽车”类应说明如何向用户展示汽车。此类也不应涉及任何应用程序逻辑。它应该完全坚持描述什么是汽车

查看类。 此类别的类应该表示应用程序向用户呈现模型的方式。与前面的示例一样,属于这一类别的类的示例是“MainMenu”、“ScoreBoardView”和“RenderingEngine”。“MainMenu”类确切地知道如何向用户显示选项列表,以及如何看起来非常漂亮。它还知道,当选择其中一个选项时,它应该稍微改变其视觉外观,例如显示“按下”的按钮。但是,这个类不知道当按下按钮时逻辑应该做什么。这是控制器类的工作。因此,视图类只是让相关控制器知道用户已经与用户界面进行了交互(通过调用某个控制器方法或发送通知)。更多关于这方面的信息,请参见控制器部分

“ScoreboardView”还知道,当它传递一个字符串和数字(玩家姓名和分数)的字典(模型类)时,它是以一种特定的方式呈现它们,可能是在一个表中。它不知道如何更新字典,也不知道如何计算平均分数。如果需要更多信息,则需要向控制器索取。然后,控制器的工作就是找出获取信息的方法

最后,对于本节,“RenderingEngine”是一个视图类,因为它接受模型并为其生成视觉效果。就这样。渲染引擎被编程为知道如何显示汽车,并且如果汽车被设置为位于特定位置,则应在此位置绘制,或者如果汽车发生碰撞,则需要绘制汽车。但同样,它不知道如何更新汽车的位置,也不知道速度等等

控制器类。 最后,正如我之前所提到的,控制器是将所有内容组合在一起的类,为应用程序提供流程和控制。人们将控制器类称为应用程序的“大脑”,因为它们根据用户的输入(通过视图类传递)和数据模型(通过模型类访问)做出决策。 控制器类控制应用程序的流。他们将用户从“主菜单”带到“车辆选择屏幕”带到“赛道”带到“比赛”带到“记分板屏幕”等等!它们通过类对模型进行更改,并向视图类提供更改反馈,以便这些类可以向用户显示应用程序的当前状态。控制器有效地链接模型