IOS-MVC设计模式初探
来源:互联网 发布:ubuntu samba 编辑:程序博客网 时间:2024/06/17 05:40
1.MVC模式:模型-视图-控制器,
模型:保存应用程序数据的类
视图:包括窗口、空间以及其他一些用户可以看到并能与之进行交互的元素。
控制器:把模型和视图绑定在一汽的代码,包括处理用户输入的应用程序逻辑。
(1)主要目的是为了最大限度地分离这3类代码:
创建的任何对象都应该十分清晰明确,让人一看就知道其属于MVC的哪个部分,尽量不要包含那些可能被认为属于多个分类的功能。例如:实现按钮的对象不应该包含按钮点击时处理数据的代码。
(2)MVC同时可以确保代码的最大可重用性:
一个实现通用按钮的类可以再任何应用程序中使用,否则,如果在实现按钮的类的时候同时进行了一些特定的计算,那这个类就只能在最初实现它的应用程序中使用。
2.在编写Cocoa Touch程序时,用户界面可以创建大部分可视化窗口,但是有时候仍然需要在代码中进行修改(甚至)创建用户界面。
3.保存用户数据的模型:可以使自己编写的一个Object-C类;也可以使用Core Data构建一个数据模型。
4.控制器通常由应用程序的具体类组成。控制器可以使完全自定义的类(NSObject子类),但大多数情况下控制器是UIKit框架提供的那些通用控制器类(比如UIViewController)的子类。通过继承,可以使一个类获取大量的实用功能,而不必花时间进行重复造“轮子”。
5.对于IOS应用,基本可以说是忠实于MVC的。
6.创建一个项目:
(1)创建一个IOS程序之后,会自动生成4个源代码(.h/.m结尾):其中两个为应用程序委托(application delegate),另一个是这个应用仅有的一个视图的视图控制器(继承了UIViewController,是通用控制器中的一个)。(2)控制器类与分镜文件中的对象交互:输出接口与操作方法。
输出接口:由IBOutlet关键字声明。可以把输出接口看做指向用户界面中对象的指针。可以关联输出接口与用户界面对象,就可以在代码中使用这个输出接口来修改标签显示文本了。
操作方法:是一种返回类型为IBAction的特殊方法。可以对视图界面对象进行设置,以触发控制器类中的某些特殊方法。其参数可以为(id) sender,指向出发该方法的按钮。
(3).m文件(使用基本的输出接口与操作方法)
@implementation ViewController- (IBAction)buttonPressed:(UIButton *)sender { NSString *title = [sender titleForState:UIControlStateNormal]; NSString *plainText = [NSString stringWithFormat:@"%@ button pressed.",title]; _statusLabel.text = plainText; //这里不用在实现部分再声明statusLabel变量,使用 _变量名 的方式可以直接访问。}@end
下面摘录一段总结:摘自:http://liuzhichao.com/p/1379.html
1.Model和View永远不能相互通信,只能通过Controller传递。
2.Controller可以直接与Model对话(读写调用Model),Model通过Notification和KVO机制和Controller间接通信。
3.Controller可以直接与View对话,通过outlet,直接操作View,outlet直接对应到View中的控件,View通过action向Controller报告事件的发生(如用户Touch我了)。Controller是View得直接数据源(数据很可能是Controller从Model中取得并经过加工的)。Controller是View的代理(delegate),以同步View与Controller。
另一篇博文:http://www.cnblogs.com/pengyingh/articles/2495376.html
C对M:API
C对V:Outlet
V对C:Target-action, Delegate,Datasource
M对C:Notification,KVO
MVC把软件系统分为三个部分:Model,View,Controller。在cocoa中,你的程序中的每一个object(对象)都将明显地仅属于这三部分中的一个,而完全不属于另外两个。
Model = 你的程序是什么(而不是你的程序是如何显示的)
让我们举个例子,我们上中学的时候,我们的步步高电子词典中有个游戏叫“雷霆战机”,也就是“打飞机”的游戏,Model就是:你的小飞机的攻击力是多少?你的小飞机上装的是什么武器,炮弹,导弹,还是激光炮?你的小飞机还有多少血?等等。再概括点说,就是你的程序将要实现的功能,或者是它所能干的事情。
Controller = 如何使你的模型呈现给用户(程序逻辑)
Controller是程序内部的逻辑,大多情况下你将看不到它,它将Model和View捆绑在一起,它将处理用户的输入,例如,你按开炮的键子,Controller就会通过内部的逻辑来处理你的要求,并在屏幕上做出相应的显示,你将看到屏幕上的小飞机发出炮弹击中敌机。这也是Controller控制View的显示的例子。所以你可以把Controller看成是连接M和V的桥梁。
View = 在屏幕上你所看到的(是你的Controller的“奴才”)
接着前面的小飞机,View就是:你的小飞机是什么样子的,有一个还是两个翅膀,有几挺枪炮;还有,你的飞机在屏幕上的位置等等。总之,你在屏幕上看到的组件都可以归类为View。
MVC可以帮助确保帮助实现程序最大程度的可重用性。各MVC元素彼此独立运作,通过分开这些元素,可以构建可维护,可独立更新的程序组建。
另外一篇关于MVC模式讲解的博文:http://www.cnblogs.com/limlee/archive/2012/06/13/2547537.html
这篇博文真的很赞。
- IOS-MVC设计模式初探
- IOS MVC模式初探
- iOS 设计模式MVC
- iOS设计模式---MVC
- ios mvc设计模式
- iOS MVC设计模式
- iOS MVC设计模式
- iOS MVC设计模式
- IOS设计模式:MVC模式
- iOS开发设计模式-MVC
- IOS-MVC设计模式深入
- iOS-MVC设计模式
- iOS 的MVC设计模式
- iOS中的MVC设计模式
- iOS中的MVC设计模式
- iOS的MVC设计模式
- 【iOS开发】MVC设计模式
- iOS MVC设计模式详解
- Spring 静态网页范例
- leedcode做题总结, 题目Unique Binary Search TreesI/II95/96
- 网页制作中的隐藏域的妙用
- 传递给 CreateWindow 和 RegisterClass 的 HINSTANCE 有什么用?
- 获取mac地址并以十六进制格式加冒号分隔显示
- IOS-MVC设计模式初探
- 相关PCB设计参数详解---fwqlzz love is for ever
- SetROP2
- 执行力差是谁的责任?
- 做了一个邮件群发机
- Java中的Timer和TimerTask在Android中的用法
- 李彦宏布局人工智能,2014年百度都研发了哪些“未来产品”
- 生成要素西南方向点
- python单例模式Singleton