主业iOS/PHP,副业啥都玩,QQ:705719110,欢迎来撩!

RAC简单用法

iOS开发 随风 126℃ 0评论

RAC在iOS的实际开发中确实是一件有力的武器,此文将从以下几方面讲解

RACSignal
RACSubject
RACSequence
RACMulticastConnection
RACCommand
RAC常用宏
RAC-bind
RAC-过滤
RAC-映射
RAC-组合
RAC+MVVM-网络请求
RACSignal

总结
.核心:
.核心:信号类
.信号类的作用:只要有数据改变就会把数据包装成信号传递出去
.只要有数据改变就会有信号发出
.数据发出,并不是信号类发出,信号类不能发送数据
.使用方法:
.创建信号
.订阅信号
.实现思路:
.当一个信号被订阅,创建订阅者,并把nextBlock保存到订阅者里面。
.创建的时候会返回 [RACDynamicSignal createSignal:didSubscribe];
.调用RACDynamicSignal的didSubscribe
.发送信号[subscriber sendNext:value];
.拿到订阅者的nextBlock调用

RACSubject
RACSubject 在使用中我们可以完全代替代理,代码简介方法。具体代码请看demo中的RACSubject。
总结
我们完全可以用RACSubject代替代理/通知,确实方便许多
这里我们点击TwoViewController的pop的时候 将字符串”ws”传给了ViewController的button的title。

步骤:

1.创建信号

2.订阅信号

3.发送信号

* 注意
RACSubject和RACReplaySubject的区别
RACSubject必须要先订阅信号之后才能发送信号, 而RACReplaySubject可以先发送信号后订阅.
RACSubject 代码中体现为:先走TwoViewController的sendNext,后走ViewController的subscribeNext订阅
RACReplaySubject 代码中体现为:先走ViewController的subscribeNext订阅,后走TwoViewController的sendNext
可按实际情况各取所需。

#### RACSequence

使用场景—: 可以快速高效的遍历数组和字典。

也可以使用宏

当有多个订阅者,但是我们只想发送一个信号的时候怎么办?这时我们就可以用RACMulticastConnection,来实现。代码示例如下

RACCommand

RACCommand:RAC中用于处理事件的类,可以把事件如何处理,事件中的数据如何传递,包装到这个类中,他可以很方便的监控事件的执行过程,比如看事件有没有执行完毕
使用场景:监听按钮点击,网络请求

总结
bind(绑定)的使用思想和Hook的一样—> 都是拦截API从而可以对数据进行操作,,而影响返回数据。
发送信号的时候会来到30行的block。在这个block里我们可以对数据进行一些操作,那么35行打印的value和订阅绑定信号后的value就会变了。变成什么样随你喜欢喽。
RAC-过滤

有时候我们想要过滤一些信号,这时候我们便可以用RAC的过滤方法。过滤方法有好多种,如下代码,从不同情况下进行了分析。

RAC-映射

RAC的映射在实际开发中有什么用呢?比如我们想要拦截服务器返回的数据,给数据拼接特定的东西或想对数据进行操作从而更改返回值,类似于这样的情况下,我们便可以考虑用RAC的映射,实例代码如下

RAC-组合

把多个信号聚合成你想要的信号,使用场景—-:比如-当多个输入框都有值的时候按钮才可点击。

转载请注明:怼码人生 » RAC简单用法

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址