当前位置:  开发笔记 > 编程语言 > 正文

Apple为什么说iPhone应用程序使用MVC?

如何解决《Apple为什么说iPhone应用程序使用MVC?》经验,为你挑选了2个好方法。

Apple将iPhone应用程序使用的架构模式描述为MVC.但是,几乎没有现代应用程序使用MVC(如Trygve Reenskaug所述).现代操作系统,包括iPhone OS,本身就可以处理控制器的责任.什么是错误的,通常被称为MVC实际上是MVP.

Apple为什么说MVC而不是MVP?



1> Ben Gotow..:

嘿! 这当然是一个很好的问题 - 而且我不确定我知道答案.我认为Apple几乎普遍使用术语MVC,因为Cocoa/AppKit中的许多视图使用数据绑定直接从模型中绘制数据,这打破了MVP模式.在下图(来自 本文)中,MVP模型显示了通过演示者移动的所有数据 - 对于精心构建的Cocoa应用程序通常不是这种情况.

在大多数Cocoa应用程序中,数据绑定和键值观察用于将视图和模型绑定在一起,而无需控制器的交互来更新它们.此外,在Cocoa应用程序中,有一个主控制器,用于确定加载视图的时间和位置.借用glenn_block对这个问题的回答:

在MVC中,Controller负责确定显示哪个View以响应任何操作,包括何时加载应用程序.这与MVP不同,其中操作通过View路由到Presenter.

alt text http://blog.vuscode.com/blogs/blogs/malovicn/WindowsLiveWriter/ModelViewPresenterMVPVSModelViewControll_1327B/image_15.png

希望有所帮助!苹果可能是一个完全随机的决定 - 但我认为他们的选择是合理的.



2> 小智..:

在大多数Cocoa应用程序中,数据绑定和键值观察用于将视图和模型绑定在一起,而无需控制器的交互来更新它们.大段引用

我不同意.

据CS193P(iOS7编程)课程的斯坦福大学教授Paul Hegarty所说,Cocoa中的模型从未与视图进行对话.我已经观看了所有课程(2011年,2012年,2013年,它们都可以在iTunesU上免费获得),每次重复此课程.在2013年秋季课程中,他举了一个你可能想要在iPhone中显示的歌曲列表(你的模型)的例子(视图):视图要求控制器显示一堆歌曲,这是它的责任.控制器与模型交谈,拍摄一些歌曲,然后将它们推向视图.视图仅显示歌曲.视图永远不会保存模型数据.

他说,KVO(键值观察)是模型和控制器之间通信的模式.没有约束力.

我认为"Apple MVC"=="Microsoft MVP".

"Microsoft MVC"仅适用于Web,称为"ASP.NET MVC 4".在Web中,Controller是"用户输入入口点",而桌面/触摸是View

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有