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) 配套使用

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容