newbie ios - MVC中的模型在哪里?

时间:2013-07-30 00:51:44

标签: ios objective-c model-view-controller architecture

我正在制作一个进行计算的应用程序。

我有一堆视图和视图控制器。

用户单击按钮以打开和关闭触发动画的屏幕区域。编辑其他文本字段时禁用某些文本字段。当你点击计算完成一堆数学时,结果会动画到屏幕上。

  1. 视图..是我们使用xib文件或故事板进行的所有操作
  2. 控制器是...我们制作ios应用程序时开始的视图控制器..我们引用插座和操作
  3. 3 .. 模型是??? 我假设我执行的数学应该进入模型..任何不直接影响视图的计算内容。但到底哪里是模特?!我只是创建一个通用对象并在控制器内实例化它?在我看过的所有教程中......我只看到人们使用视图控制器和相关视图。

4 个答案:

答案 0 :(得分:7)

模型并不像你提到的其他东西那样标准化。在Xcode中构建单个视图应用程序时,它带有一个viewController和一个appDelegate。正如您所注意到的,模型缺失了。

那是因为你建立了自己的模型。模型通常是您在视图控制器中实例化的对象,然后通过其方法操作数据。该模型将是一个.h.m文件,您可以创建一个对象,通过其方法操作来自用户输入的数据。

因为让您的观点直接与您的模型交谈是不好的做法,反之亦然,您的viewController充当联络人。视图(按钮,标签)包含viewController可以访问的屏幕数据。一旦viewController有权访问此数据,它就会将该数据发送给模型。如前所述,模型可以是您在viewController中实例化的对象。它会考虑您的应用程序并操纵您的viewController发送它的数据。

实例化模型的好地方是viewDidLoad方法。这可确保您的应用程序准备就绪时,您的模型也将如此。

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.myModel = [[Model alloc] init];
}

作为实例变量的模型引用应放在viewController .m文件顶部的私有类扩展中。

@interface ViewController ()
@property (nonatomic) Model *myModel;
@end

答案 1 :(得分:3)

一如既往,设计取决于您。我建议用你需要的模型对象创建一个核心数据模型(这将为你生成类文件)。在iOS学习初期熟悉核心数据是获取最佳实践的好方法。

This应该让你入门。这样做也可以让你轻松地保持程序状态,易于维护和扩展。

祝您iOS开发顺利。

答案 2 :(得分:2)

是的,你应该创建一个NSObject子类并将你的计算放在其中 是的,您的Controller应该创建Model对象,并使用它来协调View。

术语“模型”仅指您独立于UI使用的类的集合。设计不佳的应用可能根本没有模型。一个设计良好的应用程序将通过提供合适的模型来保持其控制器不会被业务逻辑混乱。

让您的模型与其他所有内容保持一致的粗略准则是您的模型绝不应该#import <UIKit/UIKit.h>

答案 3 :(得分:0)

你的数学实际上是在你的视图控制器中。除非您想为各种其他方法重用相同的函数。

您的模型将是您要存储到Core Data或其他一些永久存储的任何内容。

基本上,视图与UI,数据库模型以及控制器的所有其他内容进行对话