ReactiveCocoa 学习之路之史上最全攻略

ReactiveCocoa 学习之路之史上最全攻略

本文介绍的是史上最牛叉的ios开发新框架之一,最大的特点就是:直观和灵活。直观的代码容易编写、阅读和维护,灵活的特性便于应对变态的需求,当然最重要的还是高效。各路大神(阳神,喵神,唐神等等)都不吝啬对它的赞美之词,而且该框架已被美团等广泛使用,好用的不要不要的..。本文主要介绍本人在学习ReactiveCocoa的时候的学习过程以及对一些学习资料的总结,欢迎大家批评发炎。闲话不多吹下面进入正题。

什么是ReactiveCocoa?

ReactiveCocoa(其简称为RAC)是由Github 开源的一个应用于iOS和OS X开发的新框架。RAC具有函数式编程和响应式编程的特性。

是在iOS平台上对FRP的实现。FRP的核心是信号,信号在ReactiveCocoa(以下简称RAC)中是通过RACSignal来表示的,信号是数据流,可以被绑定和传递。它主要吸取了.Net的 Reactive Extensions的设计和实现。

大神leezhong在博客中提到的比喻,可以更好地帮我们理解ReactiveCocoa.

可以把信号想象成水龙头,只不过里面不是水,而是玻璃球(value),直径跟水管的内径一样,这样就能保证玻璃球是依次排列,不会出现并排的情况(数据都是线性处理的,不会出现并发情况)。水龙头的开关默认是关的,除非有了接收方(subscriber),才会打开。这样只要有新的玻璃球进来,就会自动传送给接收方。可以在水龙头上加一个过滤嘴(filter),不符合的不让通过,也可以加一个改动装置,把球改变成符合自己的需求(map)。也可以把多个水龙头合并成一个新的水龙头(combineLatest:reduce:),这样只要其中的一个水龙头有玻璃球出来,这个新合并的水龙头就会得到这个球。

为什么要用ReactiveCocoa

Native app有很大一部分的时间是在等待事件发生,然后响应事件,比如等待网络请求完成,等待用户的操作,等待某些状态值的改变等等,等这些事件发生后,再做进一步处理。 但是这些等待和响应,并没有一个统一的处理方式。Delegate, Notification, Block, KVO, 常常会不知道该用哪个最合适。有时需要chain或者compose某几个事件,就需要多个状态变量,而状态变量一多,复杂度也就上来了。为了解决这些问题,Github的工程师们开发了ReactiveCocoa。

其实用简单的一句话来说就是: RAC统一了对KVO、UI Event、Network request、Async work的处理,因为它们本质上都是值的变化(Values over time)。

ReactiveCocoa试图解决什么问题呢

大神唐巧在他博客中这样写道主要解决三个问题:

1.传统iOS开发过程中,状态以及状态之间依赖过多的问题。

2.传统MVC架构的问题:Controller比较复杂,可测试性差

3.提供统一的消息传递机制

详情请查看大神博文在此就不再赘述

那么问题来了?如何学习ReactiveCocoa呢

网上教程很多,本人只是做了一下总结,又初级到高级所需要看的一些文章。

初级 教程

对一个新手来说需要掌握最基本的API的使用。必看的一篇文章是RayWenderlich 网站提供的系列教程,其详细程度非常牛逼。当然国内大神们早就对该教程进行翻译了 小伙伴们轻松了!!

第一部分地址:ReactiveCocoa入门教程——第一部分

第一部分地址:ReactiveCocoa入门教程——第一部分

进阶教程

进阶教程主要是进一步分析框架的结构以及实现原理。

参考资料:

1.ReactiveCocoa github上的readme的中文翻译

2.介绍ReactiveCocoa框架的每个组件的文章,对熟悉ReactiveCocoa API非常有帮助

3.美团网官方博客之RACSignal的Subscription深入分析

4.cocoaChina文章-Reactive Cocoa详解

5.cocoaChina文章-ReactiveCocoa2实战

6.cocoaChina文章-说说ReactiveCocoa 2

7.NSHipster上的文章-Reactive​Cocoa

8.国外牛人的一篇文章-Data-Driven iOS Development with ReactiveCocoa

9.国外牛人的一篇文章-Getting Started with ReactiveCocoa

10.NSHipster上一篇关于Recative cocoa的介绍-Reactive​Cocoa

11.cocoaChina文章-【长篇高能】ReactiveCocoa 和 MVVM 入门

12.ReactiveCocoa常用语法-这样好用的ReactiveCocoa,根本停不下来

书籍

当然如果你比较豪,想买点书看看可以选择这个--《Functional Reactive Programming on iOS》

源码

1.使用ReactiveCocoa框架编写的app源码之《MVVM-IOS-Example》

2.使用ReactiveCocoa框架编写的app源码之《GroceryList》

3.使用ReactiveCocoa框架编写的app源码之《C-41》

视频

ReactiveCocoa at MobiDevDay 2013视频

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

推荐阅读更多精彩内容