【问题标题】:MVC: Is it a "good practice" to pass a model from a ViewController to another?MVC:将模型从 ViewController 传递到另一个是“好习惯”吗?
【发布时间】:2013-01-12 08:15:53
【问题描述】:

在我采用 MVC 架构的应用中,我有两个不同的控制器,它们使用基本相同的模型类。

由于init 上的此模型类使用NSKeyedUnarchiver 取消归档整个对象图,因此在传递给新控制器时初始化该类的新实例可能会在资源方面有点昂贵。

所以我想知道将指向第一个控制器的已初始化模型类的指针传递给第二个控制器而不是从头开始创建新实例是否是“好习惯”。

你们觉得呢?

【问题讨论】:

  • 可以肯定 MVVC 的核心概念之一是每个视图都只有一个模型...
  • 嗯,也许我不清楚,或者我没有明白你的意思,如果是这样,我很抱歉,但我不是以英语为母语的人,最重要的是我是 MVC 新手。无论如何,我不是在谈论在一个控制器中拥有两个模型,而是在谈论两个控制器共享同一个模型。
  • 好的,我建议更改您的标题... ViewController 是 MVVC,MVC 的衍生产品。一般来说,您希望每个视图都有一个模型类(默认情况下,每个控制器)。这允许您将特定于控制器的业务验证逻辑放入模型中。如果您对多个控制器使用同一型号,则您的控制器可能是多余的。
  • @JeremyHolovacs 在 iOS 开发的上下文中,控制器(通常)被称为视图控制器,但范式仍然通常称为 MVC。此外,没有必要将模型类与视图联系起来——重点是将数据存储和操作的方式与其显示和输入的方式分离。无需更改标题。
  • @Caleb 很高兴知道!谢谢。

标签: ios model-view-controller


【解决方案1】:

这就是模型、视图和控制器分离的原因,这样你就可以像这样轻松地混合搭配,不用担心疯狂的重构。所以,是的,你可以,并且鼓励这样做。控制器如何共享数据,尤其是当您在 iPhone 上使用向下钻取导航 UI 时。

【讨论】:

    【解决方案2】:

    所以我想知道将指针传递给 第一个控制器的已经初始化的模型类到 第二个控制器,而不是从头开始创建一个新实例。

    当然,如果两个控制器应该对相同的数据进行操作,那很好。视图控制器真的不应该依赖于模型的来源——它应该只使用你给它的那个。这使您的视图控制器保持灵活——这意味着您始终可以将同一个控制器与模型的不同实例一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      • 2010-12-02
      • 2011-11-07
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多