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视频     

文章目录
  1. 1. ReactiveCocoa 学习之路之史上最全攻略
    1. 1.1. 什么是ReactiveCocoa? 
    2. 1.2. 为什么要用ReactiveCocoa
    3. 1.3. ReactiveCocoa试图解决什么问题呢
    4. 1.4. 那么问题来了?如何学习ReactiveCocoa呢
      1. 1.4.1. 初级 教程
      2. 1.4.2. 进阶教程
      3. 1.4.3. 书籍
      4. 1.4.4. 源码 
      5. 1.4.5. 视频
,