这些天我一直在用自己的方式进行iOS编程,我不确定我的程序实现策略是否是最好的方式。
根据我的理解,模型应该是一个单独运行的程序,也就是说,如果我通过提供必要的输入来通过命令行调用它的函数,那么程序应该自动执行并产生所需的结果。
有几次,我发现我的模型和VC交织在一起。也就是说,尽管VC纯粹处理视图和用户输入,并相应地调用模型中建立的函数,但在我看来,如果没有视图,模型将无法独立运行。
我的问题基本上是从这个怪癖中提出来的,你们是坚持让你们的模型独立于View控制器运行,还是让它们相互干扰和相互依赖是可以的。
发布于 2011-11-06 08:47:05
模型根本不应该与视图直接通信。模型应该仅在响应视图控制器发出的查询时才与视图控制器通信。视图控制器应该在输入到视图中的输入和模型中的数据之间进行协调。保持所有这些部分的分离是非常重要的。即使你不这样做,你的应用程序仍然可以工作,在某些情况下,走捷径可能会更快,但当你处理所有的问题时,你只会让自己在未来面临很多痛苦。在iTunes连接上有关于这方面的很棒的视频。尤其是覆盖MVC的CS193P视频#1,请参见:
)
发布于 2011-11-06 08:47:48
你的模型不应该包含任何控制器或视图代码。您应该能够在不需要任何控制器或视图的情况下对其进行测试。
您的控制器应该处理模型和视图之间的所有协调工作。
发布于 2012-07-27 19:19:58
我理解你的问题,因为我也在为同样的问题而挣扎。但是你使用的语言太模糊了,不能给出一个好的答案。
例如,你说“我发现我的模型和VC交织在一起”。你说的“交织”到底是什么意思?视图控制器知道模型的接口并与其交互。这很正常,对吧?
简短/模糊的答案是,你的视图控制器不应该做任何“模型”的事情(处理数据和计算),你的模型不应该做任何视图或控制器的事情(担心按钮按下,加载PNG,等等)。
当你说“在我看来,模型在没有视图的情况下不会独立工作”时,这对我来说也太含糊了,我无法具体解决这个问题,但即使是设计良好的模型也只是“坐在那里”。他们需要一些东西来刺激他们,并与他们互动。这可能是一种情况下的测试代码,也可能是另一种情况下的View Controller。这并不意味着你做错了什么。
如果你在SO上查看你的问题的右栏,你会看到至少10个关于MVC的类似问题,所以去做一些阅读:)
https://stackoverflow.com/questions/8024265
复制相似问题