【问题标题】:Does Xcode force MVC design pattern by default?Xcode 默认强制 MVC 设计模式吗?
【发布时间】:2013-05-10 03:23:15
【问题描述】:

我是 iOs 开发的新手,想遵循正确的设计模式,但看起来 Xcode 默认强制用户使用 MVC 设计模式。

我有模型 (MyApp.h) 您有一个视图(我可以在其中拖放组件) 我有一个控制器(MyApp.m)

这是正确的思维方式吗?

谢谢

【问题讨论】:

  • 不,.h 是标头,而不是模型。模型是一个保存信息的类,控制器将模型中的数据绑定到视图。我建议您阅读MVC,然后阅读developer.apple.com 上有关iOS 开发的文档
  • 这可能会回答您的问题stackoverflow.com/questions/5227904/…
  • xcode 只是一个 IDE,objC 不强制执行它,但苹果强烈推动你走向它

标签: ios


【解决方案1】:

Xcode 不会“强制 MVC”。这是最佳实践,Apple 很容易做到,但 MVC 中的关键概念之一是将模型对象与视图和视图控制器对象分离,但这种适当的隔离仅通过程序员纪律而不是通过工具来实现。

无论如何,我建议您参考 Apple 在 Cocoa 核心能力 指南中关于 Model-View-Controller 的入门。该页面上有很多很好的链接。

【讨论】:

    【解决方案2】:

    我将举一个非常基本的例子。

    您想显示人员列表,包括他们的姓名、年龄和位置,如下所示:

    Bob    32    United States
    Paul   22    England
    Jack   24    France
    ...
    

    在这里,您将创建一个继承自NSObject 的新类,您将其称为Person。您的类将由头文件 (.h) 和实现文件 (.m) 组成。它将具有属性,用于保存“真实”人的不同元素,以及访问和/或处理它们的方法(获取名称、增加年龄、更改位置)。这是你的模型

    然后,您将使用UITableViewController 的子类CustomTableViewController 来呈现数据。这是您的控制器

    视图实际上是包含在您的UITableViewController 中的tableView

    MVC 模式背后的基础是您的CustomTableViewController 负责tableView 和您的Person 对象之间的通信。这发生在您的tableViewController 文件CustomTableViewController.m 的实现中。

    您的tableViewController 将(例如)创建一个Person 对象数组,从某处获取所有数据,创建Persons,将它们存储到数组中,等等。

    然后,UITableViewControllers(当然还有它们的子类)实现一个名为cellForRowAtIndexPath: 的委托方法,tableView 在需要显示单元格时调用该方法。 tableViewController 创建一个cell,用数据填充它,并将单元格交给tableView。这就是你处理沟通的方式。您不会直接向您的tableView 请求获取数据。

    这也适用于反向。如果您的tableView 允许编辑,它将通知tableViewController 用户交互,后者的作用是反映对您的模型的修改。

    【讨论】:

      【解决方案3】:

      不完全是。最好从 Apple 的文档中了解它:

      开头:this 然后你可以深入了解它here

      【讨论】:

        猜你喜欢
        • 2011-07-13
        • 1970-01-01
        • 2018-07-31
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多