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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Simpon 中级黑马   /  2016-5-10 10:16  /  10739 人查看  /  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下一页
您需要登录后才可以回帖 登录 | 加入黑马