码迷,mamicode.com
首页 > 移动开发 > 详细

M-V-VM在iOS开发中的应用

时间:2015-03-06 19:23:48      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

        项目开发中,经常遇到一个界面很复杂,各种控件各种View,相互之间有复杂的互动逻辑,各组件的数据有时还需要专门的服务器接口支持

       MVC模式会把这些逻辑都放到C里面实现,使得某个ViewController非常庞大复杂。不管是改动功能还是debug,都很费时。

       M-V-VM模式引入MVC中,可以改善这种情况。结构如下:

技术分享

解释

       将一个界面中的各种元素分成几个相对独立的组件,每个组件创建一个对应的ViewModelViewController创建并管理这些ViewModel之间的相互通讯互动

       ViewModel管理View的刷新和用户操作事件。如果用户的响应需要其他组件进行互动,则通过delegate向上传递给ViewController。由ViewController进行ViewModel之间的通讯路由

       View提供一个用户刷新显示的API,内部元素的具体刷新实现外部不可见。

除了刷新显示,View还提供用户操作的响应,通过delegate通知ViewModel处理。

       DataModelViewModel管理。它具有获取View的数据、保存数据到某个数据结构的功能。一般会创建一个公共属性保存获取到的新数据。ViewModel对这个属性建立KVO监控。

       我们一般会使用异步方式从网络下载新数据,当新数据下载成功,经过解析后存储到公共属性里。这时,KVO方法被激活执行,ViewModel读取属性的值传递给View,让它刷新显示

       DataModel提供一个类似reloadData的更新数据方法,由ViewModel调用。ViewModel只要调用了这个方法,一切就开始自动运行

       DataModel仅对ViewModel可见。这样,这三者形成了一个相对独立的生态圈,外部仅能看见ViewModel。由ViewModel提供对外的API,比如刷新数据,提交跨ViewModel通讯申请等

Demo项目在这里下载地址

M-V-VM在iOS开发中的应用

标签:

原文地址:http://my.oschina.net/u/1418722/blog/383544

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!