rac

美团技术分析:http://tech.meituan.com/tag/ReactiveCocoa

干货集中营-ReactiveCocoa+RXSwift+MVVM:http://www.cocoachina.com/ios/20160729/17244.html

ReactiveCocoa入门教程:第一部分:http://www.cocoachina.com/ios/20150123/10994.html

图解ReactiveCocoa: http://www.cocoachina.com/ios/20161130/18232.html

ReactiveCocoa 中 奇妙无比的“宏”魔法 :http://www.cocoachina.com/ios/20170214/18682.html

ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析:(上)http://www.cocoachina.com/ios/20161206/18300.html

http://www.cocoachina.com/ios/20160706/16934.html



函数响应式编程

ReactiveCoCoa是iOS中实践函数响应式编程的利器。

函数式编程的特点是:

数据结构比较少,鼓励函数的重用,通过组合不同的函数行程高阶函数来满足需求

面向对象通过封装不确定因素来使得代码被人理解,而函数式编程通过减少不确定因素来使得代码被人理解

函数式的架构都是基于值不可变无副作用这个特点。

响应式编程特点是:

面向数据流和变化传播的编程范式

a=b+c, a的值随着b和c的更新而更新,就像Excel一样

可以显示的使用箭头来表示数据流向

图解RAC

ReactiveCocoa的源码阅读起来相对其他开源代码来说更不容易,因为需要很多函数式编程的思维。我喜欢把难以理解的概念在脑中用图构思出来,所以这篇文章将用图片来描述我脑中的RAC思想。

RACSigal

RACSigal是RAC中的一个重要的类,如果按照黑盒的理解,RACSigal是个魔法一般的箱子,它可以把传送给它的数据在箱子里面经过各种操作变换成另一种东西,然后再传递给下一个箱子。而它可以变换成好多东西,可以是一个数字,也可以是一个新的箱子(RACSignal)。

subcribe

1

(RACDisposable *)subscribe:(id)subscriber;

subscribe是订阅者向RACSigal建立起了订阅关系,通过一条虚线来表示订阅,同一个箱子可能会和多个订阅者连接,当箱子里面有值传出的时候,会向所有订阅者发送值。

map

map是箱子里面那坨乱七八糟的线,魔法一样地把输入到箱子里面的值变成另一个值,再包装成新的箱子,所有订阅这个新箱子的订阅者都将接受到这个新值。

flattenMap

flattenMap是RAC中非常多operator的基础函数。flattenMap把传入的值转变成一个个新的箱子,然后把这些箱子拆箱,再把值输出给订阅者。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • RAC使用测试Demo下载:github.com/FuWees/WPRACTestDemo 1.ReactiveC...
    FuWees阅读 6,489评论 3 10
  • 标签: iOS RAC 概述 ReactiveCocoa是一个函数响应式编程框架,它能让我们脱离Cocoa AP...
    GodyZ阅读 7,631评论 16 97
  • RAC支持的UI控件 RACCommand RACCommand类用于表示事件的执行,一般来说是在UI上的某些动作...
    花前月下阅读 2,780评论 0 5
  • 1.ReactiveCocoa简介 ReactiveCocoa(简称RAC),是由Github开源的一个应用于IO...
    雷晏阅读 1,184评论 4 15
  • 背景: 作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通...
    春暖花已开阅读 9,915评论 7 9