MVC中的View应该有自己的类吗?

时间:2010-08-17 20:34:51

标签: iphone objective-c model-view-controller uiview

我对与iPhone开发相关的MVC范例感到有些困惑。 目前,我正在将应用分为:

  1. 模型(FooModel.h,FooModel.m)

  2. 查看(FooView.xib)

  3. 控制器(FooController.h,     FooController.m)

  4. 但我是否应该使用View作为UIView的子类(FooView.h,FooView.m)..?

    这只是一个简单的游戏应用程序。

2 个答案:

答案 0 :(得分:1)

这可以帮助您理解在iphone开发中实现的MVC:

Understanding View Controllers in Cocoa Touch

答案 1 :(得分:1)

NIB既不是控制者也不是视图; NIB由控制器(UIViewController.nibName)引用,用于实例化控制器的视图。默认的nib名称是控制器类的名称(即,如果您没有设置nib名称,它将自动查找“MyViewController.nib”)。

如果您需要编写完全独立的UI代码,它应该在视图中。这可能是一个自定义控件或一组控件(例如颜色选择器视图)。

如果您需要在UI中实现任何特定于Foo的内容,可以添加FooView.m,例如自定义绘图/触摸处理。此外,如果您需要访问FooView的子视图,可能更容易将它们设置为FooView上的插座(而不是FooController);这意味着您无需在viewDidUnload中取消设置它们。

标准的命名约定是将它称为“FooViewController”,因为它与UIView层次结构紧密耦合(你可能有一个额外的FooController,它只管理模型;也许是一个FooWebController用于同一模型的web接口)。

最终,从长远来看做任何最简单的事情。就个人而言,我没有添加额外的类,直到很明显它们变得必要,但我尝试构造我的代码,以便很容易重构位。一旦我编写了更多代码,我就会更好地了解应该如何进行结构化,并且更好地了解需要多少工作。这可能意味着我花了更多的时间进行重构,但这也意味着我花更少的时间做一个(错误的)设计,或者编写那些因为一些架构改变而只使用过一次的类。

希望这也意味着发布会更快地出现。这个很重要。 UI要求变化太快,无法花费大量时间;我们即将为我们的某个应用程序进行完整的UI大修,以更好地支持iPad和多任务处理。