【问题标题】:Understanding MVC pattern used in iOS apps了解 iOS 应用程序中使用的 MVC 模式
【发布时间】:2011-08-06 04:51:31
【问题描述】:

我已阅读 Apple 的 MVC article 并对各种事情感到困惑。首先,Apple 在其几乎所有示例应用程序中都使用了 View 和 Controller 的组合,这很好,我喜欢它,但他们在本文中自相矛盾,因为他们说 View 不应该依赖于 Controller 等。

我的主要问题是,是否有人有指向 Apple 的示例 iOS 项目之一的链接,这是 MVC 模式的一个很好的例子——包括数据检索等,因为我不完全理解模式的模型部分。

我不明白“域对象”和模型对象之间的区别。例如,如果我想检索订单列表,这将发生在模型类 Orders 中。那么我是否会有另一个具有诸如 OrderDate、OrderNumber 等属性的 Order 类,或者这将如何工作?

【问题讨论】:

  • 并非所有 Apple 示例代码都遵循正确的 MVC。示例代码用于演示/显示 API。这些示例中的模型对象也可以像 NSMutableDictionary 对象一样简单。

标签: iphone objective-c cocoa-touch model-view-controller


【解决方案1】:

这个sample code 演示了一种加载和显示 UITableView 的多阶段方法。我认为深入研究真的很有趣。它将在作品中展示 MVC。

【讨论】:

    【解决方案2】:

    以下是模型-视图-控制器(也称为 MVC)模式如何映射到应用的主要部分:

    模型→数据

    查看 → 用户界面

    控制器 → 核心逻辑

    这完全用示例代码解释

    http://www.hollance.com/2011/04/making-your-classes-talk-to-each-other-part-1/

    【讨论】:

    • “我的主要问题是,有没有人有一个指向 Apple 示例 iOS 项目的链接,这是 MVC 模式的一个很好的例子”
    • 只有答案的代码。没有完全描述 MVC
    • 我希望 OP 自从 3 年前发布问题以来就得到了 MVC。
    • 但它对新手开发人员很有帮助
    • 第一个链接坏了
    【解决方案3】:

    我相信以下代码将帮助您了解如何在 iOS 应用程序中使用 MVC,因为它的描述是:

    "MVCNetworking 是一个示例,展示了如何创建网络 使用模型-视图-控制器设计模式的应用程序。 具体来说,它通过获取画廊的 XML 来显示照片画廊 来自 Web 服务器的描述、缩略图和照片,并使用 Core 用于在本地缓存此信息的数据。”

    http://developer.apple.com/library/ios/#samplecode/MVCNetworking/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010443

    【讨论】:

    • 我感到困惑的部分是在哪里放置 Http Web 服务调用。过去,当我从事 MS MVC 工作时,我们将 Web 服务调用放在控制器中。但是对于 ios 开发,我收到了有关向 Model 添加 http Web 服务调用的建议。我觉得任何一种方式都有效,但我不确定哪种方式更适合 MVC 模式。你对此有任何见解吗?谢谢!
    • 我也是这样,我把它们分开了。尽管我已经看到服务调用在模型中运行良好的实现。我的例子是一个 uiimage,其中服务调用嵌入到该类中,以便它在显示占位符图像的同时从 Web 检索图像。但通常我在这个示例中看到类似的代码结构developer.apple.com/library/ios/#samplecode/LazyTableImages/…
    【解决方案4】:
    • 模型是应用程序的大脑。它确实 计算并为自己创造一个可以生活的虚拟世界 没有视图和控制器。换句话说,想想一个模型 作为应用程序的虚拟副本,没有面孔!

    • 视图是您的用户与您的互动的窗口 应用。它大部分时间都显示模型内部的内容, 但除此之外,它还接受用户的交互。任何 用户和您的应用程序之间的交互被发送到视图, 然后可以由视图控制器捕获并发送到 型号。

    • 控制器在 iOS 编程中通常指的是视图控制器。将视图控制器视为模型和您的 意见。他们解释一侧发生的事情(用户 在视图方面,或模型提供的信息)和 根据需要使用该信息更改另一方。

    【讨论】:

      【解决方案5】:

      这是迄今为止我遇到的最好但最简单的解释(来自 RayWenderlich)

      “MVC 背后的理念是
      - 视图应该只关心它们的呈现方式,
      - 模型应该只关心他们的数据,
      - 控制器应该努力将两者结合起来,而不必对他们的内部结构了解太多。”

      【讨论】:

        猜你喜欢
        • 2013-05-12
        • 1970-01-01
        • 2017-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-18
        • 2011-03-19
        相关资源
        最近更新 更多