zoukankan      html  css  js  c++  java
  • 20180119-01-RACSignal的基础

    一.获取一个信号的方式

      1.单元信号

        RACSignal *signal1 = [RACSignal return:@"Some Value"];
        RACSignal *signal2 = [RACSignal error:[NSError errorWithDomain:NSCocoaErrorDomain code:999 userInfo:nil]];
        RACSignal *signal3 = [RACSignal empty];
        RACSignal *signal4 = [RACSignal never];

      2.动态信号

     RACSignal *signal5 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
            [subscriber sendNext:@1];
            [subscriber sendNext:@2];
            [subscriber sendCompleted];
            return [RACDisposable disposableWithBlock:^{
                NSLog(@"信号已销毁");
            }];
        }];

      3.cocoa桥接

     RACSignal *signal6 = [self.view rac_signalForSelector:@selector(setFrame:)];
     RACSignal *signal7 = [self.btn rac_signalForControlEvents:UIControlEventTouchUpInside];
     RACSignal *signal8 = [self.view rac_willDeallocSignal];
     RACSignal *singal9 = RACObserve(self.view, backgroundColor)

      4.信号变换

     RACSignal *signall10 = [signal1 map:^id _Nullable(id  _Nullable value) {
            return [value substringFromIndex:1];
        }];

      5.序列变换

    RACSequence *sequence = @[@1,@2,@3].rac_sequence;
    RACSignal *signal11 = sequence.signal;

    二.订阅一个信号的方式

      1.订阅方法

    [signal11 subscribeNext:^(id  _Nullable x) {
            NSLog(@"next value is %@",x);
        } error:^(NSError * _Nullable error) {
            NSLog(@"Ops Get some error:%@",error);
        } completed:^{
            NSLog(@"It finish success");
        }];

      2.绑定

     RAC(self.view,backgroundColor) = signal9;

      3.Cocoa桥接

    [self.view rac_liftSelector:@selector(convertPoint:toView:) withSignals:signal1,signal2, nil];
    [self.view rac_liftSelector:@selector(convertPoint:toView:) withSignalsFromArray:@[signal1,signal2]];
    [self.view rac_liftSelector:@selector(convertPoint:toView:) withSignalOfArguments:signal5];

      4.订阅过程

     RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
            [subscriber sendNext:@1];
            [subscriber sendNext:@2];
            [subscriber sendCompleted];
            return [RACDisposable disposableWithBlock:^{
                NSLog(@"信号销毁");
            }];
        }];
        
    RACDisposable *disposable = [signal subscribeNext:^(id  _Nullable x) {
            NSLog(@"next value is %@",x);
        } error:^(NSError * _Nullable error) {
            NSLog(@"Ops Get some error:%@",error);
        } completed:^{
            NSLog(@"It finish success");
        }];
    [disposable dispose];

    三.信号的变换和组合

    四.RACSignal的各类操作

    单个信号的变换

  • 相关阅读:
    [51单片机] TFT2.4彩屏1 [文字显示 画矩形]
    [51单片机] 中断1-中断整体介绍
    [汇编] 从键盘输入一个一位数字,然后响铃n声
    [汇编] 比较2个字符串是否相等
    [汇编] 将字符串里的一个'&'字符换成空格
    [汇编] 2数相加极简单版
    mysql的IFNULL函数
    mysql 中 unix_timestamp和from_unixtime函数
    Excel实现二级菜单联动
    Hibernate中@Embedded和@Embeddable注解
  • 原文地址:https://www.cnblogs.com/it-q/p/7989652.html
Copyright © 2011-2022 走看看