黑马程序员技术交流社区

标题: 【iOS技术分享】快速上手 ReactiveCocoa(RAC) [打印本页]

作者: Simpon    时间: 2016-5-10 10:16
标题: 【iOS技术分享】快速上手 ReactiveCocoa(RAC)
本帖最后由 Simpon 于 2016-10-27 10:27 编辑


ReactiveCocoa是响应式编程(FRP)在IOS中的一个实现框架,它的开源地址为:https://github.com/ReactiveCocoa/ReactiveCocoa# ;在网上看了几篇文章,感觉理论讲了很多,但是代码还是看不太懂,于是自己把它github文档上的一些使用的经典示例实现了一下,项目中有需要时可以直接搬过去用,用的熟练了再读源码也比较容易理解。

    例1. 监听对象的成员变量变化,当成员变量值被改变时,触发做一些事情。
    这种情况其实就是IOS KVO机制使用的场景,使用KVO实现,通常有三个步骤:
1,给对象的成员变量添加监听;
2,实现监听回调;
3,取消监听;
而通过RAC可以直接实现,RAC的回调是通过block实现的,类似于过程式编程,上下文也更容易理解一些。
    场景:当前类有一个成员变量 NSString *input,当它的值被改变时,发送一个请求。
    实现:
  1. [RACObserve(self, input) subscribeNext:^(NSString* x){  
  2.      request(x);//发送一个请求  
  3.    }];
复制代码
每次input值被修改时,就会调用此block,并且把修改后的值做为参数传进来。

场景:在上面场景中,当用户输入的值以2开头时,才发请求.
实现:
场景:上面场景是监听自己的成员变量,如果想监听UITextField输入值变化,框架也做了封装可以代替系统回调

实现:
例2. 同时监听多个变量变化,当这些变量满足一定条件时,使button为可点击状态
场景:button监听 两个输入框有值和一个成员变量值,当输入框有输入且成员变量为真时,button为可点击状态
实现:
场景:满足上面条件时,直接发送请求
实现:
例3. 类似于生成产-消费
场景:用户每次在TextField中输入一个字符,1秒内没有其它输入时,去发一个请求。TextField中字符改变触发事件已在例1中展示,这里实现一下它触法的方法,把1秒延时在此方法中实现。


loggingSignal在每次被调用subscriibeNext:^(id x)或subscribeCompleted:^方法时(12行和17行),它创建进传进的参数block_1就会被触动发,而block_1中的sendNext:方法会调用subscriibeNext:^中对应的block_2, 而block_1中的sendCompleted会调用subscribeCompleted:中对应的block_3

精华推荐:
黑马程序员:为苹果与iOS开发者的前景正名
与君共勉 --- 记黑马22期同学成长经验。
【持续更新】2016年最全最新的iOS视频+软件+源码+面试/技术
关于iOS 10最新的课程视频及demo第三弹,火速发布了

作者: heima_heimahaha    时间: 2016-5-20 21:00
ReactiveCocoa(RAC)
作者: hp2016    时间: 2016-5-30 13:41
谢谢分享
作者: hexintao    时间: 2016-6-19 23:37
ReactiveCocoa(RAC)
作者: Chris_Wu    时间: 2016-7-7 13:21
戳开看看
作者: 沈某人    时间: 2016-7-21 16:20
666666666666666666
作者: beyonehan    时间: 2016-9-16 16:19
大神啊,谢谢分享
作者: beyonehan    时间: 2016-9-16 16:21
谢谢大神分享啊
作者: Alaxbb    时间: 2016-10-17 01:47
???????
作者: (づ⁰⌒⁰)づ    时间: 2016-11-3 20:31
学习了!!!
作者: 有无相生    时间: 2016-11-7 10:13
学习了...
作者: HuyaRC    时间: 2016-11-7 10:20
收藏收藏收藏收藏收藏收藏
作者: king、小白    时间: 2016-11-8 22:59
111111111111111111111111111111111
作者: renglian123    时间: 2016-11-11 23:12
谢谢分享
作者: 乔布永    时间: 2016-11-22 16:27
zh3ndan123123123123
作者: SmallOrange    时间: 2016-11-22 18:13
为什么要隐藏啊??????????????????
作者: Chen2088    时间: 2016-11-28 16:08
谢谢分享,谢谢谢谢谢谢
作者: geniuswen    时间: 2016-12-1 18:07
不错,学习了
作者: 妍飞凤舞    时间: 2016-12-7 17:16
谢谢你的分享
作者: iOS_HY    时间: 2017-2-17 11:30
学习学习
作者: zidingyi    时间: 2017-3-23 15:38
哈哈,不错,值得学习,加一啊啊
作者: blcl1988    时间: 2017-5-20 20:51
学习学习
作者: 韦德460    时间: 2017-5-25 22:50
戳开看看

作者: gaosiyang    时间: 2017-7-12 16:58
这个挺好的
作者: Jason_zhu    时间: 2017-8-2 10:56
LOOK  LOOK
作者: yvenshane    时间: 2017-8-3 08:56
afdsgdfgfdgdsfgsdfgdfsgfdgfdgdfgdfg
作者: yvenshane    时间: 2017-8-3 09:03
ddqdqdereere
作者: 457982765    时间: 2017-8-7 10:57
看看看看看看看看看看看看看看
作者: 119    时间: 2017-8-8 10:33

学习学习
作者: 小沙弥mzz    时间: 2017-10-12 10:55
学习学习学习学习学习学习学习学习
作者: wps    时间: 2017-10-16 15:16
谢谢分享
作者: guangying    时间: 2017-10-24 09:48
我是光影  大家好  O(∩_∩)O哈哈~
作者: a1137611824    时间: 2017-11-3 13:01
挺好的内容,支持支持。
作者: wangyue    时间: 2017-12-15 09:24
6666666666666666666666
作者: baby14    时间: 2018-7-9 07:41
多谢分享
作者: aa12322    时间: 2019-1-28 15:04

作者: 行我福    时间: 2019-2-22 10:23
RAC 函数式编程比较好的框架
作者: 闭上的眼镜    时间: 2020-4-30 14:19
好好看看
作者: zhangyuze    时间: 2021-8-24 10:07





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2