ReactiveCocoa的运用

ReactiveCocoa的运用

在我们iOS开发过程中,当某些事件响应的时候,需要处理某些业务逻辑,这些事件都用不同的方式来处理。
比如按钮的点击使用action,ScrollView滚动使用delegate,属性值改变使用KVO等系统提供的方式。
其实这些事件,都可以通过RAC处理
ReactiveCocoa为事件提供了很多处理方法,而且利用RAC处理事件很方便,可以把要处理的事情,和监听的事情的代码放在一起,这样非常方便我们管理,就不需要跳到对应的方法里。非常符合我们开发中高聚合,低耦合的思想

在RAC中最核心的类RACSiganl

````objc
  //RACSignal信号使用步骤:1:创建信号  2:订阅信号  3: 发送信号

    //1:创建信号
    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {

        //didSubscribe调用:只有被订阅了,才调用
        //didSubscribe作用:发送数据
        //3:发送信号

        [subscriber sendNext:@1];
        return  nil;
    }];

    //2:订阅信号
    [signal subscribeNext:^(id x) {

        //nextBlock调用:只有发送数据了才会调用
        //nextBlock作用:接受数据,展示UI
        NSLog(@"%@",x);
    }];

RACDisposable: 用于取消订阅或者清理资源,当信号发送完成或者发送错误的时候,就会自动触发它。
--不想监听某个信号时,可以通过它主动取消订阅信号。

-(void)racWithSignalDisposable{

    //1:创建信号
    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {

        _subscriber = subscriber;
        //3发送信号
        [subscriber sendNext:@1];

        return [RACDisposable disposableWithBlock:^{

            NSLog(@"取消订阅");
        }];
    }];

    //2:订阅信号

    RACDisposable *disposable = [signal subscribeNext:^(id x) {

        NSLog(@"%@",x);
    }];

    //主要订阅者在就不会取消订阅者
    [disposable dispose];
}

RACSubject:RACSubject: 信号提供者,自己可以充当信号,又能发送信号。

使用场景:通常用来代替代理,有了它,就不必要定义代理了。

1.要在自定义的类(RedView)中,添加 RACSubject属性,再在 redView 中 添加一个按钮,按钮点击发送消息
2.控制器中添加 RedView ,按钮点击之后,redView会收到消息

-(RACSubject *)subject{

    if (_subject == nil) {

        _subject = [RACSubject subject];
    }
    return _subject;
}
-(IBAction)clickBtn:(UIButton *)btn{

    [self.subject sendNext:@1];
}
-(void)racWithDelegate{

    //订阅
    [_redView.subject subscribeNext:^(id x) {

        NSLog(@"控制器做了一件事情%@",x);
    }];
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值