Quantcast
Viewing all articles
Browse latest Browse all 767

干货集中营-ReactiveCocoa+RXSwift+MVVM

投稿文章,作者:南栀倾寒(博客

学习函数响应式编程已经接近两个月的时间。说实话坚持下来实在不易。两个月的时间看过近150篇博文,算下来啃下来一本千页的技术书籍也差不多。不过随着知识面的拓广,学习起来也更加顺利。本篇文章主要整理下自己收集的学习路线。其中包括了函数式编程的思想,ReactiveCocoa2.x(主要是Objective-C部分的函数响应式编程框架),ReactiveCocoa4.x(扩充了Swift部分的支持),RXSwift(ReactiveX系列),加上函数式编程对MVVM架构的帮助和影响。

写在之前

这篇文章中不适合新手,没有码过2年业务的程序员我觉得可以了解下,不一定非要学习使用这个,因为你的经验往往不足,在学习之后可能觉得自己能驾驭(要上天),但是随着业务的复杂度上升,类似RAC的重量级框架带来的副作用,调试的困难性等会让你后悔莫及。

面向对象编程是一个被大众易于接受的方式,也就意味着更容易协同工作。函式响应式编程虽然不是一个新的话题,但是引入iOS项目实际开发还是要抱谨慎态度,毕竟学习函数式编程的路线还是比较陡峭,这就意味者在团队开发中,需要斟酌如何引用,如何培养新手,如何控制对框架的不良使用在项目中蔓延。

MVC是一个非常成熟的架构,在业务开始复杂的时候,合理的将网络请求,数据持久化等相关与控制器耦合不严重的公共抽取出来,足够满足日常开发需求。 对MVVM的理解的差异性也会写出让团队成员写出截然不同的风格。

说了这么多废话,其实是想表达,如果想在项目中使用要谨慎,谨慎 ,再谨慎,不过我们可以从其中学习到很多以前我们从来没思考过的问题,甚至是一种全新的思维方式,有时候一些巧妙的实现,会让你感叹到计算机科学的神奇,也可以在你跳槽的时候成为你的加分项。

知识必备

需要你对Objective-C,block有比较清晰的了解,由于后面部分代码是由Swift实现,建议你掌握Swift,(由于Swift的特性,对于函数式编程更容易实现,也更好理解,毕竟你看写博文的作者几乎每个都掌握的,所以去学习吧。),如果你用过Swift的高阶函数,map,FlatMap,reduce,Filter等,会更加容易理解。

思想的建立

这部份主要奠定自己的函数式思想的建立,对函数(闭包,block)作为一等公民有新的理解。

这一部分可能学习的时间最久,需要的知识面也可能更广,也最容易让人放弃,因为你不知道你花了大把时间学习的是什么(jb玩意)。

不过坚持下来,你将会更加理解函数式编程,在学习接下来的ReactiveCocoa和RXSwift的时候只是把思想代码化。

首先来篇自己写的

本文让你对如何实现链式编程有个简单的认识。文中包括了Objective-C和Swift两个版本。

来自Mattt Thompson发布在 NShipster让你对引入RAC这类FRP(Functional Reactive Programming)框架对编程范式的改变有个直观的印象。

来自蘑菇街的limboy解释下RAC和FRP的关系。

深入浅出-iOS Reactive Cocoa的常见用法

简书上看到的文章,从最基本的Demo开始。

在这里直接推荐了两篇使用的文章。貌似会比较突然,但是作者觉得,Talk is cheap ,show me the code.(别装逼了,亮代码吧) 思想总归是要用代码来实现的,这部份内容偏实用,预计需要一周的时间才能掌握的差不多,可能你在学习的过程中,会遗忘,没关系,思想的建立是一步一步的,学习这些代码还是为了更好的建立思想(我也没指望你一遍掌握RAC),至于代码这篇文章,反正你是要看好几遍的,第一次忘了就忘了。

之前的文章都是 functional Programming,和reactive programming,这里偶然看到一篇响应式编程思想入门,强烈推荐。

这篇文章中讲到了RAC自带的debug插件,在学习RAC过程中的实践,以及一些技术博文链接。

在学习过程中我们可能经常会听见一些比较函数式风格的名词,比如monad,functor等,学到这里我找到了另外比较好的资料。

第一本书籍可能花费的时间很长,不过这本书也是最有深度的,可以从中学到更多函数式的思想。

ReactiveCocoa2.x

非常不错的RAC入门教程

ReactiveCocoa入门教程——第一部分对应的英文版

ReactiveCocoa入门教程——第二部分 对应的英文版

来自sunnyxx的博文。

Reactive Cocoa Tutorial [1] = 神奇的Macros

Reactive Cocoa Tutorial [2] = 百变RACStream

Reactive Cocoa Tutorial [3] = RACSignal的巧克力工厂

Reactive Cocoa Tutorial [4] = 只取所需的Filters

学了这么多来一篇RAC结构分享的文章

ReactiveCocoa v2.5 源码解析之架构总览

用了这么久的RAC,你可能不止一次听到冷热信号,也可能没有意识到有些什么是不对的,这里给出来自美团的对冷热信号的分析。

RACSignal的Subscription深入分析 – 美团点评技术团队

细说ReactiveCocoa的冷信号与热信号(一)

细说ReactiveCocoa的冷信号与热信号(二):为什么要区分冷热信号

细说ReactiveCocoa的冷信号与热信号(三):怎么处理冷信号与热信号

美团博文最后给出了一个冷热信号可以转换的方法,但是没有讲清楚,这里有篇外国博文作为补充。

Comparing replay, replayLast, and replayLazily

这里补充一篇对RAC的概述

说说ReactiveCocoa 2

RAC项目实战

ReactiveCocoa2实战

这样好用的ReactiveCocoa,根本停不下来

iOS开发下的函数响应式编程

如果你认认真真的学习到了这里,想必以及有了不错的进步,接下来我们可以看下RAC的源码实现了,看下这个庞然大物是如何实现这些神奇的功能的。

RAC核心元素与信号流

剖析@weakify 和 @strongify

ReactiveCocoa源码阅读之前序

ReactiveCocoa源码阅读之RACSignal(一)

ReactiveCocoa源码阅读之RACSignal(二)

ReactiveCocoa源码阅读之bind函数

ReactiveCocoa源码阅读之攻略flatten

ReactiveCocoa源码阅读之switchToLatest/combineLatestWith

ReactiveCocoa源码阅读之RACScheduler

MVVM With ReactiveCocoa

这部份主要讲了RAC在MVVM中的表现,以及如何利用RAC在MVVM中做数据绑定这项核心操作。

MVVM与ReactiveCocoa的运用(Part1)

MVVM与ReactiveCocoa的运用(Part2)

MVVM Tutorial with ReactiveCocoa: Part 1/2

MVVM Tutorial with ReactiveCocoa: Part 2/2

MVVM With ReactiveCocoa

ReactiveCocoa4.x

在学习这部份的时候发现没有合适的入门教程,所以就自己摸索着翻译了部分。可以参看

ReactiveCocoa-Swift部分入门指南-Signal

ReactiveCocoa-Swift部分入门指南-SignalProducer

一份Reactive4文档翻译

ReactiveCocoa 4 文档翻译目录

ReactiveCocoa4的详细讲解

ReactiveCocoa 4 图解之一——事件(Event)

ReactiveCocoa 4 图解之二——监听器(Observer)

ReactiveCocoa 4 图解之三——存根(Disposable)

至于四作者并没给出,估计是挖的坑忘记填

ReactiveCocoa 4 图解之五——信号(Signal)

ReactiveCocoa 4 图解之六——信号发生器(SignalProducer)

RXSwift

使用自带教程入门

RxSwift 入坑手册 Part0 – 基础概念

RxSwift 入坑手册 Part1 – 示例实战

快速指南系列

RxSwift快速指南(一)

RxSwift快速指南(二)

RxSwift快速指南(三)

RxSwift快速指南(四)

速查表

文末给出了我自己整理的RAC和RXSwift速查表,毕竟谁也不可能记得住那么多方法和小技巧的。

ReactiveCocoa和RXSwift速查表


Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.

Viewing all articles
Browse latest Browse all 767

Trending Articles