【问题标题】:Why does XCode prefix controller with xxxViewController instead of xxxController?为什么 XCode 控制器的前缀是 xxxViewController 而不是 xxxController?
【发布时间】:2012-01-28 13:12:37
【问题描述】:

我不明白:在iOS的所有教程中,它显示了一个经典的3部分模型,视图,控制器,那么为什么XCode用xxxViewController而不是xxxController作为控制器前缀?

这让人相信控制器只是用于视图而不是模型,并且比经典 MVC 更接近 MVVM。

在给出的答案中说它不是 MVC。

但如果我查看斯坦福大学的课程,它清楚地将 iOS 开发描述为 Lecture1.pdf 中的经典 MVC @http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-fall

【问题讨论】:

    标签: iphone ios xcode


    【解决方案1】:

    Xcode 并不是对所有控制器都这样做,仅对视图控制器(它们是 UIViewController 的子类)执行此操作。它可以更容易地找到哪些管理视图,您可以创建其他控制器并命名您喜欢的名称。

    【讨论】:

    • 是的,但我的问题是:它也是关联模型的控制吗?
    • 考虑到控制器在模型和视图之间进行调解,正如您问题中的图表所示 - 是的。命名只是一种方便,如果您编写的应用程序有很多视图,您会看到它的好处。
    【解决方案2】:

    作为this Apple discussion thread中的g_wolfman cmets:

    尽管 Apple 在其开发人员文档中使用了 MVC 一词, 他们实际上并没有使用它;他们使用一种变体 [呈现-抽象-控制 (PAC)|http://en.wikipedia.org/wiki/Presentation-abstraction-control]。

    关键区别在于,在MVC中,视图直接获取信息 从模型和控制器只关心改变 模型。因此视图可能需要知道如何从 模型作为创建视图的一部分。在 PAC 中,视图和模型是 彼此完全隔离;一切都通过 控制器。这允许视图以如下方式编写: 避免需要任何“业务逻辑”。

    编辑-- 来自苹果文档 - http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html#//apple_ref/doc/uid/TP40002974-CH6-SW1

    组合角色

    可以合并一个对象所扮演的 MVC 角色,制作一个对象,用于 例如,同时满足控制器和视图角色——在这种情况下,它 将被称为视图控制器。同样的方法,你也可以拥有 模型控制器对象。对于某些应用程序,组合角色,例如 这是一个可以接受的设计。

    【讨论】:

    • 以及上面所说的我的 Abizern.. 由你决定你想要什么名字......你可以命名任何控制器而不用前缀 view。
    • 但在斯坦福大学课程中,他们明确表示这是 MVC,请参阅我的更新。
    • 在 Apple doc 中,它显然是 MVC。与 windows phone mvvm 相反,有明确的控制器。
    • 同样,如果您复制他人的语言,您必须提供适当的引用,否则您只是在窃取他人的信用。我已经编辑了您的答案以执行此操作,但您将来需要自己执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多