本讲内容
⼀、MVC
MVC
Model - View - Controller 即 模型 - 视图 - 控制器⼲广泛应⽤于各种开发。
MVCModel(模型),存储、处理数据,为应⽤用程序提供数据。例如:通
讯录中的ContactPerson、《⾖豆瓣》中的Activity、Movie等等。View(视图),展⽰示⽤户界面视图,提供⽤户交互,展示模型提供的数据。
例如:系统提供的视图类、⾃定义的视图类等等。
Controller(控制器),控制视图显示,处理用户交互,从模型获取数据展⽰示在视图上。目的是解除模型和视图之间的耦合。
C和V通信
C直接控制V。
例如:在Controller中创建一个UIButton。V向C发起通信的⽅式:
设置View的target/action,例如设置UIButton的target/action。设置delegate,例如设置UITextField、UIAlertView代理。设置dataSource,例如设置UITableView的dataSource。
C负责处理V产生的事件。
C和M通信
C向M提出需求,直接使⽤M提供的数据。M向C发起通信方式:KVO、通知,可以在M发生变化时通知C,C负责读取M提供的数据,负责监控M的变化并进⾏处理。
V和M通信
V和M禁⽌止通信。C负责M和V之间的通信。C从M获取数据,将数据显⽰示在View上。
MVC优势
实现低耦合,减少视图和控制器之间复杂冗余的代码。
提⾼重用性,多个视图可以共享一个模型,多个控制器可以共享一
个视图。
更易于维护,M、V、C独⽴立,可以分别处理不同的变化。
⼆、通知
通知
通知模式:一个对象能够给其他任意数量的对象⼲广播信息。对象之间可以没有耦合关系。
NSNotification(通知),封装了要⼲广播的信息。NSNotificationCenter(通知中⼼心),管理注册接收消息对象,⼲广播消
息。observer(观察者),需要监测⼲广播信息的对象,即接收信息的对象。
使⽤方法
接收信息对象在通知中心进⾏行注册,包括:信息名称、接收信息
时的处理⽅方法。
对象通过通知中⼼⼲广播信息,包括:信息名称、信息内容。
已经注册过的对象如果不需要接收信息时,在通知中心注销。
使⽤方法
注册: [[NSNotificationCenter defaultCenter] addObserver:注册对象selector:@selector(⽅方法名) name:信息名称 object:nil]
注销: [[NSNotificationCenter defaultCenter] removeObserver:注销对象 name:信息名称 object:nil];
发送信息:[[NSNotificationCenter defaultCenter]postNotificationName:信息名称 object:发信息对象 userInfo:发送消息时传递的信息];