一次简单的ReactiveCocoa+MVVM的实践

毕业到现在已经两年多了,时间就像手中的沙子,无论你是摊开还是握紧,它总会从指间流逝!

      两年多的工作经验,从最初写代码什么东西都往控制器里写导致一个稍微大点的项目里随处可见容纳上千行代码的控制器,到为了提高运行效率而使用的MVC框架,再到如今的MVVM框架。一路走来不知道踩了多少的坑坑洼洼,但是我很庆幸自己坚持下来了。

     说起代码质量,我觉得很对不住上一家的公司,公司只有我一个iOS从去年中旬开始的两个项目,整体的框架是照着最普通的来的,基本一多半是用的MVC,因为是我自己做项目所以很多弊端出来了,没有一个整体的规范,自己想到哪里写到哪里,两个项目在大半年的时间里不停的添加功能,以至于后期我自己去维护都有点难以下手,超过千行的控制器比比皆是,那两个项目用的三方框架很多,很多三方不能达到我想要的效果所以当时直接去改的人家的源码(环信是其中之一,改过的环信已经不能叫环信了叫乱信也不为过)。对于三方框架小改可以大改的话还是用runtime去修改比较好,关于runtime也研究过很长一段时间,等有时间了再来聊聊怎么把runtime学以致用来改善代码质量。

      ReactiveCocoa,是由Github开源的一个应用于iOS和OS开发的新框架,网上有很多介绍它的文章,个人觉得最快让你上手ReactiveCocoa之基础篇 这篇作为入门很不错,这里我就不介绍它的使用方法了,贴上今天刚写的一个小程序

ReactiveCocoa一般情况下多与MVVM结合使用,它俩结合写出的代码层次分明,我们常用的很多软件都是采用这种框架实现的,比如网易新闻客户端


这是demo的整体架构 写之前先用cocoaPods 导入reactiveCocoa框架,导入方式很简单网上有很多教程。作为MVVM必不可少的几个必然是 View(DataView)    Model(DataModel)    ViewModel(DataViewModel)    Controller(ViewController)  

上面的Bar是我为了好写下载的动画 而用贝塞尔曲线写的图片下方的条状图

DataViewModel 里用来存放数据处理的,你的项目的一切网络请求都可以放在这里

在.h里先定义一个 RACCommand 实例 在定义一个 用来存放请求到的数据的数组


.m的实现 在这个实例的SingnalBlock初始化方法内部进行数据请求操作

DataModel里主要是一个类方法来设置属性值


DataView用来做视图类的处理

在主控制器中只有少量的代码

[[self.dataViewModel.fetchDataInfoCommand execute:nil] subscribeNext:^(id x) {

// 这里x 就是dataViewModel里返回的装有数据的数组了

}completed:^{

}] ;

之后再把数据通过DataView的实例方法传到dataView中进行显示



通过循环的方式显示 这里enumerateObjectsUsingBlock 类似for in 但是比for in效率高一些


这些只是写这个小demo的随笔,我当前公司做的项目整体用也是Reactivecocoa+ MVVM框架,以后会慢慢多写点它的用法,这里只是冰山一角。

另外目前在学习Python中,会在简书中记录自己学习的点点滴滴

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,563评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,611评论 4 59
  • 我不是一个拖延症重度患者,顶多算有时偷个懒,可是急性子的人遇到拖延症患者,真的恨不得所有事都可以自己完成【原来急性...
    黄家小妞阅读 499评论 0 0
  • 超级IP的生存模式一定是摒弃了物质论,而是建立在关系论之上的。这是对传统商业模式的突破,超级IP的实质不再是...
    GTR001阅读 238评论 0 0
  • 罗平–昆明–丙中洛–独龙江–大理
    书天堂阅读 355评论 1 1