Objective c MVC理念在Objective C中的应用

Objective c MVC理念在Objective C中的应用,objective-c,model-view-controller,Objective C,Model View Controller,我正在启动一个小项目,在屏幕上显示具有随机半径、随机颜色和随机位置的圆。我想在Objective C中使用MVC范例来实现这一点 我有一个包含以下实例变量的类圆: CGFloat半径 点中心 UIColor放射色 这个类不包含方法,它只保存数据。它被放在一个单独的文件中。(圆圈m和圆圈h) 我有一个myModel类,它应该是我的MVC的模型。它包含在我的视图范围内随机生成中心的方法,在该范围内,在整个控制器中从视图请求范围尺寸 每次生成随机属性(即中心、颜色和半径)时,都会在myModel类

我正在启动一个小项目,在屏幕上显示具有随机半径、随机颜色和随机位置的圆。我想在Objective C中使用MVC范例来实现这一点

我有一个包含以下实例变量的类圆:

  • CGFloat半径
  • 点中心
  • UIColor放射色
这个类不包含方法,它只保存数据。它被放在一个单独的文件中。(圆圈m和圆圈h)

我有一个myModel类,它应该是我的MVC的模型。它包含在我的视图范围内随机生成中心的方法,在该范围内,在整个控制器中从视图请求范围尺寸

每次生成随机属性(即中心、颜色和半径)时,都会在myModel类中创建一个Circle类的实例,并将其存储在NSMutableArray中。 生成完成后,此NSMutableArray将传递给控制器,然后控制器将其传递给视图,从而显示圆

我的问题是,如果我要正确实施MVC范式,我应该:

  • 模型(myModel)保存圆圈实例,还是应由控制器保存圆圈实例
  • 我的模型由一个类组成,或者由几个类组成合法吗
  • 模型知道视图的边界大小,还是说这违反了MVC的理念
  • 最后一个问题。如果我像上面所说的那样进行了实现,那么myModel和Circle是独立的模型还是两个类构成一个模型

    谢谢大家!

  • 如果您的模型中有其他组件,而不仅仅是圆,请将所有组件包装在myModel中。即使您不这样做,您可能仍然希望这样做,以允许将来添加
  • 取决于你的设计。如果您正在编写一个“基于文档”的应用程序(无论您是否使用UIDocument),那么通常只有一个类包含其他类。即使不是这样,出于归档等目的使用单个根类通常也很方便
  • 模型绝对不应该知道任何有关视图层次结构的信息。(请注意,这与了解“画布大小”之类的内容不同——在模型中存储这样的属性是合法的,并让视图按照自己的意愿显示画布,例如在UIScrollView中。)
  • 顺便说一句,提前考虑这件事真是太好了

    [应该]模型(myModel)包含Circle的实例,或者 圆圈的实例应由控制器持有

    模型应该保存数据。这就是我的工作。想象一下,如果您想更改程序的接口,会发生什么情况。您可能希望显示圆及其位置的列表,而不是(或除了)在屏幕上绘制圆。您可能需要更改或替换视图控制器来执行此操作,但不需要更改存储圆的模型。同样,您可能希望更改圆的生成方式,但请保持现在的显示方式。在这种情况下,您可能会更改模型,但视图控制器和视图可能会保持不变

    我的模型应该由一个类组成,还是由几个类组成是合法的

    数据模型通常是对象的完整图形,通常是不同类型的。您可能有一个对象来管理其余的对象(尽管您不必这样做)。例如,MyModel类包含一个存储圆形对象的数组。可以添加方形对象、组对象等

    [应该]模型知道视图的绑定大小,或者 有什么东西违反了MVC理念


    模型不应该特别了解视图,但是视图控制器可以告诉它在给定的坐标范围内生成圆。这样,如果视图更改大小或方向,视图控制器可能会知道它,它可以反过来为模型提供新的信息。

    我认为你的Circle类是主要的模型类,它应该有一个
    randomCircleWithinBounds:
    class方法,该方法创建的圆被限制在
    cRect
    中,你将传递到该方法中……然后模型的另一部分就是你的
    myClass
    -您应该重命名它以符合通用Objective-C命名约定(至少,它的名称应该以大写字母开头)。。