RAC学习

1、demo地址

https://github.com/codepgq/RACDemo

2、参考资料&文档

http://www.noobyard.com/article/p-nlyboewu-ez.html

最快让你上手ReactiveCocoa之基础篇

https://www.jianshu.com/p/87ef6720a096

最快让你上手ReactiveCocoa之进阶篇

https://www.jianshu.com/p/e10e5ca413b7

https://www.jianshu.com/p/58a1214fc6d8

https://www.jianshu.com/p/d3792ca614d9/

https://www.jianshu.com/p/289c9c694588

https://cloud.tencent.com/developer/news/297159

https://www.jianshu.com/p/0a98c6a6facc

https://juejin.cn/post/6844903574690856968

RAC语法、用法

https://blog.csdn.net/weixin_34380781/article/details/91372274?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-91372274-blog-117065815.235%5Ev36%5Epc_relevant_anti_vip&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-91372274-blog-117065815.235%5Ev36%5Epc_relevant_anti_vip&utm_relevant_index=2

https://blog.csdn.net/qq_42816425/article/details/122987794?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-122987794-blog-53350058.235%5Ev36%5Epc_relevant_anti_vip&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-122987794-blog-53350058.235%5Ev36%5Epc_relevant_anti_vip&utm_relevant_index=6

RAC语法

https://www.jianshu.com/p/d3792ca614d9/

ReactiveCocoa 常见用法

代替代理

rac_signalForSelector 用户代替代理

代替 KVO

rac_valuesAndChangesForKeyPath 用于监听某个对象的某个属性的改变

代替事件监听

rac_signalForControlEvents 用于监听某个事件

代替通知

rac_addObserverForName 用于监听某个通知,且不须要在 - (void)dealloc 中移除监听

监听文本框文字改变

rac_textSignal 用于监听文本框文字变化

代替手势

rac_gestureSignal 用于监听手势操做

多个请求完成时,再执行后继操做

rac_liftSelector:withSignalsFromArray:Signals 当传入的 Signals,每个 Signal 都至少 sendNext 过一次,就会去触发第一个 selector 参数的方法。

信号的相关操做

bind :函数会返回一个新的信号 N。总体思路是对原信号 O 进行订阅,每当信号 O 产生一个值就将其转变成一个中间信号 M ,并立刻订阅 M ,以后将信号M的输出做为新信号 N 的输出。

map \ flattenMap :用于把源信号内容映射成新的内容(信号)。

concat :组合,按必定顺序拼接信号,当多个信号发出的时候,有顺序的接收信号。

then :用于链接两个信号,当第一个信号完成,才会链接 then 返回的信号。

merge :把多个信号合并为一个信号,任何一个信号有新值的时候就会调用。

zipWith :把两个信号压缩成一个信号,只有当两个信号同时发出信号内容时,而且把两个信号的内容合并成一个元组,才会触发压缩流的 next 事件。

combineLatest :将多个信号合并起来,而且拿到各个信号的最新的值,必须每一个合并的 signal 至少都有过一次 sendNext ,才会触发合并的信号。

reduce :聚合,用于信号发出的内容是元组,把信号发出元组的值聚合成一个值。

filter :过滤信号,使用它能够获取知足条件的信号。

ignore :忽略某些值的信号,使用 RACObserve 时可配合使用,其实现由 filter 完成。

distinctUntilChanged :实现是用 bind 来完成的,每次变换中都记录一下原信号上一次发送过来的值,并与这一次进行比较,若是是相同的值,就「吞」掉,返回 empty 信号。只有和原信号上一次发送的值不一样,变换后的新信号才把这个值发送出来。

take :从开始一共取 N 次的信号。

takeLast :取最后 N 次的信号,前提条件:订阅者必须调用完成,由于只有完成,才知道总共有多少信号。

takeUntil :获取信号直到某个信号执行完成。

skip :跳过几个信号,不接受。

switchToLatest :用于 signalOfSignals (信号的信号),有时候信号也会发出信号,会在 signalOfSignals 中,获取 signalOfSignals 发送的最新信号。

doNext :执行 next 以前,会先执行这个 Block 。

doCompleted :执行 sendCompleted 以前,会先执行这个Block 。

timeout :超时,可让一个信号在必定的时间后,自动报错。

interval :定时:每隔一段时间发出信号。

delay :延迟发送 next 。

retry :重试,只要失败,就会从新执行建立信号中的 block ,直到成功。

replay :重放,当一个信号被屡次订阅,反复播放内容。

throttle :节流,当某个信号发送比较频繁时,可使用节流,在某一段时间不发送信号内容,过了一段时间获取信号的最新内容发出。

ReactiveCocoa 常见宏

RAC(TARGET, ...) 用于绑定某个对象的某个属性

RACObserve(TARGET, KEYPATH) 用于监听某个对象的某个属性,返回的是信号

@weakify(Obj) & @strongify(Obj) 配套使用

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

推荐阅读更多精彩内容