美文网首页
ReactiveCocoa-冷热信号的创建

ReactiveCocoa-冷热信号的创建

作者: 我是繁星 | 来源:发表于2018-08-07 17:03 被阅读0次

不了解冷热信号的看前一篇《ReactiveCocoa-冷信号和热信号的理解》
RACSubject及其子类是热信号。
RACSignal是冷信号。
同时ReactiveCocoa还提供了API来将RACSignal转换为RACSubject。

RACSignal
//冷信号
    RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        NSLog(@"发送信号");
        [subscriber sendNext: @"1"];
        [subscriber sendNext:@"2"];
        [subscriber sendNext:@"3"];
        [subscriber sendCompleted];
        return nil;
    }];
    [signal subscribeNext:^(id x) {
        NSLog(@"sign1 :%@",x);
    }];
RACSubject
    //热信号
    RACSubject * subject = [RACSubject subject];
    [subject subscribeNext:^(id x) {

    }];
    [subject sendNext:@"1"];

RACSubject可以附加行为,例如RACReplaySubject,可以具备热信号特性,但是可以收到订阅之前发送的消息。

    RACReplaySubject * subject = [RACReplaySubject subject];
    [subject subscribeNext:^(id x) {
        
    }];
    [subject sendNext:@"1"];
冷信号转换热信号
    RACMulticastConnection * connection = [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        [[RACScheduler mainThreadScheduler] afterDelay:1 schedule:^{
            [subscriber sendNext: @"1"];
        }];
        [[RACScheduler mainThreadScheduler] afterDelay:2 schedule:^{
            [subscriber sendNext: @"2"];
        }];
        [[RACScheduler mainThreadScheduler] afterDelay:3 schedule:^{
            [subscriber sendNext: @"3"];
        }];
        [[RACScheduler mainThreadScheduler] afterDelay:4 schedule:^{
            [subscriber sendNext: @"4"];
        }];
        return nil;
    }] publish];
    [connection connect];
    RACSignal * signal = connection.signal;
    [signal subscribeNext:^(id x) {
          NSLog(@"sign1 :%@",x);
    }];

相关文章

  • ReactiveCocoa-冷热信号的创建

    不了解冷热信号的看前一篇《ReactiveCocoa-冷信号和热信号的理解》RACSubject及其子类是热信号。...

  • 冷热信号

    冷热信号区别: 热信号是主动的,即使你没有订阅事件,它仍然会时刻推送 而冷信号是被动的,只有当你订阅的时候,它才会...

  • ReactiveCocoa技术讲解-第四讲冷热信号和并发编程

    一、冷热信号: 美团冷热信号11、热信号是主动的,即使你没有订阅事件,它仍然会时刻推送。而冷信号是被动的,只有当你...

  • ReactiveCocoa 冷热信号

    这里的数据源和sendXXX,可以理解为函数的参数和返回值。当Signal处理完数据后,可以向下一个Signal或...

  • ReactiveCocoa 冷热信号

    官方的英文描述: Cold signal is sequences that are passive and st...

  • RxSwift冷热信号

    ReactiveCocoa 针对热、冷信号分别提供了这两种类型:Signal与SignalProducer。而 R...

  • ReactiveCocoa-冷信号和热信号的理解

    冷信号 冷信号:只有有订阅者的时候才会发出信号,一对一,如果有其他的订阅者订阅会重新完整的发送信号,给订阅者发送消...

  • RAC一些常见方法的个人理解

    RACSubject 冷热信号概念 信号源分为热信号和冷信号两种,热信号是不管有没有订阅者都会发消息,而冷信号只有...

  • RAC学习之二

    RACSignal(信号)介绍: 核心思想:创建信号、订阅信号、发送信号 1、创建信号及发送信号 类方法创建RAC...

  • 01.RACSignal

    RACSignal创建流程 创建信号 - createSignal() 订阅信号 - subscribeNext(...

网友评论

      本文标题:ReactiveCocoa-冷热信号的创建

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