Cocoa Touch中的MVC:视图和模型如何交互?

Lou*_*yen 12 iphone model-view-controller objective-c key-value-observing ios

我一直认为我理解MVC,但是最近,在阅读了很多关于这个主题的Stack Overflow帖子之后,我发现MVC框架的工作方式彼此略有不同.更具体地说,在视图和模型交互的方式中,似乎有两种思想流派:

  1. 当用户与视图交互时,视图通知控制器,控制器依次对模型执行某些操作.当模型更改时,模型会通知控制器,控制器会更新视图.

  2. 视图订阅模型.当模型更改时,视图似乎会直接通知它需要自行更新.

在此输入图像描述

所以我的问题是:在Cocoa Touch(iOS)中,做MVC的最佳方法是什么?我这些天主要编写iOS编码,并且只对这个平台的最佳实践感兴趣.(我对ASP.NET,Rails,Backbone等的工作方式不感兴趣.)

如果可以提供一些KVO示例代码,那将是非常好的.谢谢.=)

小智 5

我相信苹果公司主张使用第一种方法.

它是标准MVC模型的修改版本(第二种方法),其中模型和视图完全分开.我个人认为它更清洁,更具可扩展性.

  1. 逻辑集中在控制器中.
  2. 无需编写自定义视图来处理模型中的事件.通常,您要编写自定义控制器,但使用SDK提供的视图类.在第二种方法之后,您可能必须创建一个自定义视图来处理模型中的事件.


Sta*_*ash 3

我发现关于这个问题最好的基础理论是由斯坦福大学一位非常有才华的老师保罗·哈加蒂教授的。我建议在 iTunes U 上查找这门课程 - 有 18 个讲座的高清视频和 ppt 文件可供学习。以下是课程网站的链接:http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

我记得他非常快速但彻底地浏览了材料中的MVC部分,把这件事说得很清楚。另外,我不得不说,我更同意第一流派。