阅读 1875

RAC资源帖

最近在断断续续的学习RAC,差不多两个月的时间,学了120个小时左右。不得不说RAC的学习曲线十分陡峭,造成RAC难学的主要有几点原因:

  1. 完全不同的编程思想。平常我们使用OC写代码都是面向对象的编程范式,而RAC却是在OC语言环境下实现的函数式响应编程,简称FRP。这就需要我们使用全新的思维去组织代码架构。
  2. 需要学习的方法较多。不像其他框架,我们只需要使用几个常用的方法就可以用的很好,RAC几乎需要掌握全部的方法,因为在不同的场景你需要灵活组合运用这些函数。
  3. 传统的iOS编程,对于网络请求和响应,点击事件,通知,KVO,代理这些异步事件都是分开处理,而RAC使用信号来统一包装处理。这又是一种全新的思想,需要我们掌握和理解。
  4. 就算把上面的全都理解了,但是对于怎么在项目中运用RAC才是最大的难点,因为RAC太抽象,新手完全不知道从哪里下手开始。就算用RAC写项目,也会写的四不像。

我建议学习iOS的同学都可以学习下RAC,这是一种全新的编程思想(函数式响应编程),理解透彻了,可以运用在任何语言。其实其他语言都有对应的函数式编程框架,比如JS的RxJs,Java的RxJava等等,基本上流行的语言都有对应的Rx库。

前期学习RAC的时候,我花了大量的精力去搜集资料,然后筛选,在慢慢看。因为像RAC这种新的知识,只能通过搜集网上的文章来学习,好的书籍基本上没看到。

这篇博客主要是把自己在学习RAC过程中的搜集到资料整理出来,从初级到高级,还有对应的开源项目,让你在学习RAC的过程中不至于像我一样到处搜集然后筛选资料,浪费时间。


什么是函数式响应编程范式

我们在学习一个知识点之前,不能仅仅学会如何使用,而是要知道这个知识点的来龙去脉,它能解决什么痛点,有哪些优缺点,能不能解决你现在工作或者学习中遇到的问题,然后再决定是否需要花时间系统的学习。

如果决定学习,就需要系统性并且深入的学习,不能满足于从网上copy几段代码然后运用在项目里面,就大言不惭的在简历上写上精通RAC。

我们学习一个框架,是要学习他的思想,而不是学会使用几个API就完结了事,然后又就去追求新的知识。学习不是追求最新的技术潮流,然后在简历上写上精通xxx,而是需要沉下心去研究,不然到最后只会丧失初心,越来越浮躁。

废话扯得有点多了,下面进入正题。

开头我就说过RAC是函数式响应编程框架,这里包括两个编程范式:函数式和响应式。下面这些资料可以帮助你了解

  1. RP入门
  2. 函数式编程初探
  3. iOS开发下的函数响应式编程

RAC解决了什么问题

我们要开始学习一个新框架之前,肯定需要做个背景调查:这个新框架能解决现有环境下的哪些编程痛点,是否值得我花精力去学习?

那么下面几篇文章会给你一个答案

  1. ReactiveCocoa - iOS开发的新框架

  2. Why Reactive(Cocoa)?

  3. ReactiveCocoa是Cocoa的未来

  4. Reactive Cocoa Tutorial [0] = Overview


对RAC的感性认识

因为RAC使用的是一种全新的方式来实现我们日常的iOS编程中遇到的问题:

  • 包括过多的状态依赖
  • 实现方式各异的消息传递机制(通知,代理,target-action)
  • MVC框架中的controller层过于臃肿。

下面这几篇文章看完,相信你对RAC对于前两个问题的优雅处理会有所体会,至于第三个问题,我们稍后再议。

  1. MVVM Tutorial with ReactiveCocoa: Part 1/2

  2. MVVM Tutorial with ReactiveCocoa: Part 2/2


RAC常用命令

看了上面两篇文章,相信你对RAC已经感兴趣了吧,至少我觉得RAC对于传统iOS编程的前两个痛点的解决方式非常优雅。
下面我们就要进行深入学习了,第一步就是要了解RAC的各种常用命令的作用,虽然RAC的注释写的非常详细,但是有的时候还是看的云里雾里,毕竟太过抽象,还是直接通过代码演示每个命令的用途来的更加直接。

下面的文档你可以当做字典,遇到不懂就可以来查询下。

  1. 最快让你上手ReactiveCocoa之基础篇
  2. 最快让你上手ReactiveCocoa之进阶篇
  3. RAC 基本操作命令
  4. Reactive Cocoa Tutorial [4] = 只取所需的Filters

  5. Comparing replay, replayLast, and replayLazily ----> 对应的译文

  6. flattenMap VS map + switchToLatest

  7. iOS-ReactiveCocoa使用之细说信号的订阅

  8. iOS-ReactiveCocoa使用之RACCommand

  9. [译]ReactiveCocoa基础:理解并使用RACCommand

RAC+MVVM讲解

相信我,如果你用过RAC+MVVM,你会爱上他们的组合的

  1. 【长篇高能】ReactiveCocoa 和 MVVM 入门
  2. iOS开发之ReactiveCocoa下的MVVM
  3. ReactiveCocoa2实战
  4. iOS 7最佳实践:一个天气App案例(上)
  5. iOS 7最佳实践:一个天气App案例(下)
  6. MVVM 介绍

开源项目

把上面这些看完,你基本上能在自己的项目中小范围使用RAC了,但是也仅限于使用下RAC的一些API写一写小功能,离真正理解RAC的思想还差得远了。

这个时候你就需要阅读大量开源的RAC项目来提高了,下面的项目会帮到你

  1. FunctionalReactivePixels
  2. MVVMReactiveCocoa(推荐)
  3. C41
  4. ReactiveViewModel

感慨

终于在11.1号到来的前半个小时写完了,果然deadline才是最佳生产力呀。

这篇真正意义来说不算是一篇博客,算是一个资源收集贴,水了一把,不过也写了我两个半小时。

好困,(~﹃~)~zZ

更多文章请访问我的个人博客:blog.ximu.site

关注下面的标签,发现更多相似文章
评论