A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Simpon 中级黑马   /  2016-5-10 10:16  /  9329 人查看  /  38 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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

精华推荐:

38 个回复

倒序浏览
ReactiveCocoa(RAC)
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
ReactiveCocoa(RAC)
回复 使用道具 举报
戳开看看
回复 使用道具 举报
666666666666666666
回复 使用道具 举报
大神啊,谢谢分享
回复 使用道具 举报
谢谢大神分享啊
回复 使用道具 举报
Alaxbb 初级黑马 2016-10-17 01:47:28
9#
???????
回复 使用道具 举报
学习了!!!
回复 使用道具 举报
学习了...
回复 使用道具 举报
收藏收藏收藏收藏收藏收藏
回复 使用道具 举报
111111111111111111111111111111111
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
zh3ndan123123123123
回复 使用道具 举报
为什么要隐藏啊??????????????????
回复 使用道具 举报
谢谢分享,谢谢谢谢谢谢
回复 使用道具 举报
不错,学习了
回复 使用道具 举报
谢谢你的分享
回复 使用道具 举报
学习学习
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马