RAC资源帖

作者: 西木柚子 | 来源:发表于2016-10-30 23:33 被阅读1345次

    最近在断断续续的学习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

    相关文章

      网友评论

      本文标题:RAC资源帖

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