zoukankan      html  css  js  c++  java
  • 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属性(是一个信号)

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


  • 相关阅读:
    Beta 冲刺(5/7)
    Beta 冲刺(4/7)
    Beta 冲刺(3/7)
    Beta 冲刺(2/7)
    Beta 冲刺(1/7)
    福大软工 · 第十次作业
    PTA-B 1039 到底买不买 解题思路记录
    SDN负载均衡
    团队作业——项目验收与总结博客
    个人作业——软件工程实践总结作业
  • 原文地址:https://www.cnblogs.com/SimonGao/p/4683091.html
Copyright © 2011-2022 走看看