ReactiveCocoa入门教程之信号的使用

来源:互联网 发布:win平板装ubuntu 编辑:程序博客网 时间:2024/05/17 09:15

写在之前

ReactiveCocoa是什么,它是Github上的一个开源的函数响应式编程框架,下面简称RAC

他的作用是帮我们很简单的处理事件,这里要注意,目前RAC有针对oc跟swift两个类库,OC对应的是ReactiveObjC,swift对应的则是ReactiveCocoa,目前已经是5.0.0版本。

虽然我公司项目已经使用swift进行开发,但是考虑到还有部分没有使用因此这边围绕OC语言版本展开描述。

因为RAC框架中对于block的大量使用,对block不熟悉的同学可以先补课一波。

1、导入ReactiveObjC

这里使用CocoaPods导入,假设大家已经安装好了CocoaPods,没装的自行百度呀。新建简单工程,cd到工程跟目录下,然后Podfile文件内容如下:

use_frameworks!platform :ios, "8.0"target '002--RAC' do   pod 'ReactiveObjC'end

这里注意,002–RAC=要换成你新建的工程名称=

2、创建信号并发送数据

在RAC里面,一切皆信号,信号可以发送数据,接收数据

//1、创建信号,刚创建的时候是冷信号RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {    //3、订阅者发送数据    [subscriber sendNext:@"发送内容"];    _subscriber = subscriber; //这边把订阅者保存下来就不会自动取消订阅    return [RACDisposable disposableWithBlock:^{        //取消订阅信号就会来到这里,清空资源        NSLog(@"取消订阅信号");    }];}];//2、订阅信号,这时候变成热信号//下面这个block只要subscriber发送数据,这边就会调用,可调用多次RACDisposable *disposable = [signal subscribeNext:^(id  _Nullable x) {    //x:信号发送的内容!!    NSLog(@"%@",x);}];//这边即使不调用,默认一个信号发送完收据会主动取消订阅[disposable dispose]; //手动取消订阅RACSubject的使用://1、创建信号RACSubject *subject = [RACSubject subject];//2、订阅信号//这边是可以保存多个订阅者[subject subscribeNext:^(id  _Nullable x) {    NSLog(@"接收到的数据1:%@",x);}];[subject subscribeNext:^(id  _Nullable x) {    NSLog(@"接收到的数据2:%@",x);}];//3.发送数据//遍历出所有的订阅者,调用nextBlock[subject sendNext:@"汉堡包"];

分析一下各个类作用:

RACSignal 信号类-最常见也是最常用的类
1. 创建信号
2. 通过订阅者订阅信号
3. 发送信号

RACDisposable 当信号发送完毕,或者发送失败,帮助我们取消订阅

RACSubscriber是一个协议,也是定阅者-发送信号

RACSubject 继承RACSignal,信号提供者,既可以充当信号,又可以发送信号

0 0