美文网首页iOS Developer
一次简单的ReactiveCocoa+MVVM的实践

一次简单的ReactiveCocoa+MVVM的实践

作者: 希望的翅膀 | 来源:发表于2016-08-08 17:26 被阅读0次

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

      两年多的工作经验,从最初写代码什么东西都往控制器里写导致一个稍微大点的项目里随处可见容纳上千行代码的控制器,到为了提高运行效率而使用的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中,会在简书中记录自己学习的点点滴滴

相关文章

  • 一次简单的ReactiveCocoa+MVVM的实践

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

  • ReactiveCocoa+MVVM实践篇

    实现一个完整的登陆界面 本文Demo地址:https://github.com/iOSaFei/ReactiveC...

  • ReactiveCocoa+MVVM

    ReactiveCocoa+MVVM 主要介绍ReactiveCocoa的使用(适合入门选手查看),对于新手来说,...

  • ReactiveCocoa+MVVM

    一.ReactiveCocoa常见类 1.RACSignal:信号类,一般表示将来有数据传递,只要有数据改变,信号...

  • Net: 网络iOS  Reachability &a

    TimLiu-iOS Code4App 仿面包旅行,ReactiveCocoa+MVVM 模仿iOS视频相册可截取...

  • 一次简单的分表实践

    背景:笔者负责公司内部单点登录系统(inpass)已两年有余,登录服务接入逐渐增多,登录日志逐渐增多。笔者对登录日...

  • ReactiveCocoa+MVVM实战

    ReactiveCocoa是由github开发维护的一个开源框架,简称RAC,它采用的是函数响应式编程(FRP)技...

  • ExpandableListView的简单实践

    参考自Android小白http://blog.csdn.net/sysukehan/article/detail...

  • Ajax的简单实践

    本篇文章主要解释浏览器环境下,针对ajax的HTTP请求以及如何通过ajax与服务器实现简单的数据交互。文中会给出...

  • WebAssembly的简单实践

    浏览器的性能 JavaScript 一开始就是动态类型解释性语言,动态类型解释性语言的一大特点就是灵活和慢。 所以...

网友评论

    本文标题:一次简单的ReactiveCocoa+MVVM的实践

    本文链接:https://www.haomeiwen.com/subject/pfsrsttx.html