iOS学习札记之MVC架构

iOS学习笔记之MVC架构

MVC 将屏幕对象的外观和行为分开。屏幕按钮没有任何内在含义,只是用户可以操作的按钮。按钮称为视图,它的控制器充当桥梁,将用户交互与应用程序中的目标方法联系在一起。应用程序展现和保存有意义的数据,并通过生成某种有用的结果来响应按钮操作等交互。

(墙内 链接: http://mikixiyou.iteye.com/blog/1517542 )

视图

视图组件是由UIView 类的子类及与其相关的UIViewController 类提供。iPhone 在构建视图时,以这两个类为基础。他们负载定义和放置屏幕元素。

UIViewController 类不是MVC 概念中的控制器,这点和名称略有出入,你可以理解成这是控制视图的一个类。它负载对屏幕中各项进行布局。

每个UIViewController 子类都实现了自己的loadView 方法。该方法对控制器的子视图进行布局,并建立所有的触发、回调和委托。此角度看,它也算一个控制器。

控制器

控制器行为通过三种技术实现:委托、目标操作和通知

委托(delegate)

”委托“用来移交某些UIKit 类响应用户交互的责任。

在设置某个对象的委托时,让对象传递交互消息,而让委托复制处理这些交互事务。如UITableViews 类,当用户触击某行时,该类没有响应该触击操作的内置方式,而是这种响应责任移交给委托,通过委托方法tableView:didSelectRowAtIndexPath: 来处理。

要设置某个对象的委托,可使用setDelegate: 方法的一些变体。在类声明中添加他要实现的委托协议说明。也可以自己在类中添加自己的协议声明。

 

目标操作(target action)

它是重定向用户交互的一种较低级的方式。基本上只有在实现UIControl 类的子类时,你会经常遇到它们。

 UIBarButtonItem *barListBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(getTruckStopListAction)];  

    self.navigationItem.rightBarButtonItem = barListBtn;

    [barListBtn release];

将目标设置为self ,操作设置为@selector(getTruckStopListAction)

 

 

通知

它支持应用程序中的对象的交互,及与iOS 系统上其他应用程序通信。

对象在通知中心注册为一观察者,视为订阅。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update) name:@"update" object:nil]

 

模型

模型方法通过数据源和数据含义等协议提供数据,需要实现由控制器触发的回调方法。你需要创建应用程序控制器触发的回调方法,并提供所需的任何委托协议的实现。

iPhone SDK 中的数据源可以帮助实现。

数据源指任何向另一个对象提供所需数据的对象,其类似于委托,必须在另一个对象中实现它们的方法。

它与委托的不同之处在于创建或提供对象而不是针对用户交互作出反应。