美文网首页
RAC使用笔记一

RAC使用笔记一

作者: Corbin___ | 来源:发表于2017-11-21 15:23 被阅读0次
  • RAC()


// 属性绑定
1.RAC(TARGET, [KEYPATH, [NIL_VALUE]])
1.1.TARGET 属性持有者
1.2.[NIL_VALUE] 属性
// self.outputLabel.text 的值跟self.inputTextField.rac_textSignal绑定
RAC(self.outputLabel, text) = self.inputTextField.rac_textSignal;


  • RACObserve()

// KVO 观察 TARGET中属性KEYPATH变化
RACObserve(TARGET, KEYPATH)
// 用法
// UILabel与Model绑定,这样name的值改变,对应的 label也是改变
RAC(self.outputLabel, text) = RACObserve(self.model, name);

  • rac_sequence.signal && filter

 // rac_sequence 把数组转换成RACSequence 对象
    // rac_sequence.signal 将RACSequence转换成RACSignal信号类
    RACSignal *signal = @[ @1,@2,@3 ].rac_sequence.signal ;
    signal = [signal filter:^BOOL(NSNumber *value) {
        // filter 是 yes 的时候,才会流出来
        return value.integerValue % 2;
    }];
    [signal subscribeNext:^(NSNumber *x) {
        NSLog(@"%@",x);
    }];

结果:
2017-12-04 10:49:56.506564+0800 test[5596:44442] 1
2017-12-04 10:49:56.507729+0800 test[5596:44442] 3
  • map
// 拦截信号的内容,返回自己再加修改的内容

  • rac_signalForControlEvents:UIControlEventTouchUpInside 造成多次点击
    self.btn = [[UIButton alloc] initWithFrame:CGRectMake(80, 80, 80, 80)];
    [self.btn setBackgroundColor:[UIColor redColor]];
    [self.view addSubview:self.btn];
    for (int i=0; i<10; i++) {
        [self.btn rac_signalForControlEvents:UIControlEventTouchUpInside]  subscribeNext:^(UIButton *x) {
            NSLog(@"%@",x);
        }];
    }
// 这个代码,会注册多个监听信号,当点击按钮的时候,会同时发送这么多个信号,这个结果不是我们想要的,一般是点击就响应一次就可以了

#warning 解决方案
// 设法让这个所在的方法,调一次,走一次,避免调一次方法,注册多次信号
        [self.btn rac_signalForControlEvents:UIControlEventTouchUpInside]  subscribeNext:^(UIButton *x) {
            NSLog(@"%@",x);
        }];
// how to do
       @property (nonatomic, strong) RACDisposable *flag;

       if(!self.flag) {  // 走过一次下面的代码,self.flag就不是nil了,就不会多次注册信号了
              self.flag =  [self.btn rac_signalForControlEvents:UIControlEventTouchUpInside]  
        subscribeNext:^(UIButton *x) {
              NSLog(@"%@",x);
        }];
}

相关文章

  • RAC(ReactiveCocoa)使用方法(一)

    RAC(ReactiveCocoa)使用方法(一)RAC(ReactiveCocoa)使用方法(二) 什么是RAC...

  • IOS RAC实践

    前言 RAC使用-->IOS RAC使用 -- ReactiveObjC 本文使用RAC+MVVM来模拟用户登录 ...

  • RAC使用笔记一

    RAC() RACObserve() rac_sequence.signal && filter map rac_...

  • RAC使用

    RAC常用宏 KVO监听使用 RAC宏使用 信号类使用 使用信号模拟代理 rac_sequence遍历字典 解包元...

  • RAC 的使用

    RAC(ReactiveCocoa) 使用详解 RAC 是什么? ReactiveCocoa(RAC) githu...

  • RAC使用笔记

    通知监听操作//注册简历发送通知[[[[NSNotificationCenter defaultCenter] r...

  • RAC源码解析

    RAC是一个函数响应编程框架。 先来一个简单的RAC使用: RACSignal使用步骤:1.创建信号 + (RAC...

  • RAC(ReactiveCocoa)使用方法(二)

    RAC(ReactiveCocoa)使用方法(一)RAC(ReactiveCocoa)使用方法(二) 上篇文章:R...

  • RAC 详细解析

    RAC详细解析(一)—— 框架概览RAC详细解析(二)—— 基础使用方法

  • RAC给UITextField添加代理回调

    使用RAC监听UITextField的文本可以用rac_textSignal,但是rac_textSignal是实...

网友评论

      本文标题:RAC使用笔记一

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