美文网首页
【Objective-c】 ReactiveCocoa 框架使

【Objective-c】 ReactiveCocoa 框架使

作者: MR_詹 | 来源:发表于2017-03-04 11:19 被阅读20次

ReactiveCocoa入门教程——第一部分

ReactiveCocoa入门教程——第二部分

ReactiveCocoa进阶——RACCommand的使用

总结:

1、RACSignal 和 RACSubject 的区别

 RACSubject继承于RACSignal,所以RACSubject也是信号类型,使用场景有所区分
 RACSignal:"一个方法,多个值"
 RACSubject:"一个值,多个方法"
    /*
        创建信号,block 的返回值 
        1-- 返回一个RACDisposable 对象,允许在一个订阅被取消时执行一些
            清理工作
        2-- 返回 nil 表示不清理信号
     */
    
    /* ======================== RACSignal ======================= */

    //1.0 创建信号
    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        
        //2.0 发送信号
        [subscriber sendNext:@(1)];
        [subscriber sendNext:@(2)];
        
        [subscriber sendCompleted];
        
        return [RACDisposable disposableWithBlock:^{
            NSLog(@"信号被销毁");
        }];
    }];
    
    //3.0 订阅信号,才会激活信号
    [signal subscribeNext:^(id x) {
        //block 调用时刻: 每当有信号发出数据,就会调用block
        NSLog(@"RACSignal 接收到数据:%@",x);
    }];
    
    [signal subscribeNext:^(id x) {
        //block 调用时刻: 每当有信号发出数据,就会调用block
        NSLog(@"RACSignal 接收到数据:%@",x);
    }];
    
    /* ======================== RACSubject ======================= */
    
    
    //1.0 创建信号
    RACSubject *subject = [RACSubject subject];
    
    //2.0 订阅信号
    [subject subscribeNext:^(id x) {
        NSLog(@"RACSubject 收到信号1:%@",x);
    }];
    
    [subject subscribeNext:^(id x) {
        NSLog(@"RACSubject 收到消息2:%@",x);
    }];

    //3.0 发送信号
    [subject sendNext:@(1)];
    [subject sendNext:@(2)];

输出结果:


image.png

2、RACSubject常常用来代替delegate

相关文章

网友评论

      本文标题: 【Objective-c】 ReactiveCocoa 框架使

      本文链接:https://www.haomeiwen.com/subject/bugdgttx.html