我对与iPhone开发相关的MVC范例感到有些困惑。 目前,我正在将应用分为:
模型(FooModel.h,FooModel.m)
查看(FooView.xib)
控制器(FooController.h, FooController.m)
但我是否应该使用View作为UIView的子类(FooView.h,FooView.m)..?
这只是一个简单的游戏应用程序。
答案 0 :(得分:1)
这可以帮助您理解在iphone开发中实现的MVC:
答案 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和多任务处理。