• ReactiveCocoa学习笔记--用法


    1、监测UI变量的变化

    return 后把值传递下去。

    1.1、输出

    [self.usernameTextField.rac_textSignal subscribeNext:^(id x){
      NSLog(@"%@", x);
    }];
    

     1.2、过滤->输出

    [[self.usernameTextField.rac_textSignal
      filter:^BOOL(NSString*text){
        return text.length > 3;
      }]
      subscribeNext:^(id x){
        NSLog(@"%@", x);
      }];
    

     1.3、改变数据类型->过滤->输出

    [[[self.usernameTextField.rac_textSignal
      map:^id(NSString*text){
        return @(text.length);
      }]
      filter:^BOOL(NSNumber*length){
        return[length integerValue] > 3;
      }]
      subscribeNext:^(id x){
        NSLog(@"%@", x);
      }];
    

     1.4、subscribeNext的另一种写法

    RAC宏允许直接把信号的输出应用到对象的属性上。RAC宏有两个参数,第一个是需要设置属性值的对象,第二个是属性名。每次信号产生一个next事件,传递过来的值都会应用到该属性上

    RAC(self.passwordTextField, backgroundColor) =
      [validPasswordSignal
        map:^id(NSNumber *passwordValid){
          return[passwordValid boolValue] ? [UIColor clearColor]:[UIColor yellowColor];
        }];
    

     2.常用用法

    RAC(self.outputLabel, text) = RACObserve(self.model, name);
    

    3.特殊技巧

    3.1切换到主线程

    deliverOn:[RACScheduler mainThreadScheduler]]  

    3.2 重置cell内容

    takeUntil:cell.rac_prepareForReuseSignal

    3.3 一段时间内没有新信号再往下执行

    throttle:0.5

    3.4状态改变时发出信号

    distinctUntilChanged

    3.4空信号

    - (RACSignal *)executeSearchSignal
    {
        return [[[[RACSignal empty] logAll] delay:2.0] logAll];
    }

    空信号会立即完成。delay操作会将其所接收到的next或complete事件延迟两秒执行。

    3.4反转信号

    not操作来反转信号
    例如:[signal.executing not];

    3.4 executionSignals属性(是一个信号)

    发送由命令每次执行时生成的信号,创建和发出一个新的命令执行信号执行。


  • 相关阅读:
    第5次系统综合实践
    第4次系统综合实践
    第3次系统综合实践
    第2次实践作业
    第1次实践作业
    第03组 Beta版本演示
    第03组 Beta冲刺(4/4)
    OO第四单元总结
    OO第三单元总结
    OO第二单元总结
  • 原文地址:https://www.cnblogs.com/SimonGao/p/4683091.html
Copyright © 2020-2023  润新知