美文网首页
RAC集合及其他用法

RAC集合及其他用法

作者: BigBossZhu | 来源:发表于2019-12-24 09:55 被阅读0次

RAC集合类:

  1. RACTuple:元组,类似NSArray,用来包装值
  2. RACSequence:RAC中集合,用于替代NSArray,NSDictionary可以使用它快速遍历.
    NSArray *arr = @[@"12",@"2121",@1];
    NSDictionary *dic = @{@"name":@"zhangsan",@"age":@"15",@"height":@"165"};
    
    RACTuple *tuple = [RACTuple tupleWithObjectsFromArray:arr];
    NSLog(@"%@",tuple[0]);
    
    //将集合转化为RACSequence集合
    RACSequence *sequence = arr.rac_sequence;
    RACSignal *singal = sequence.signal;
    [singal subscribeNext:^(id x) {
        NSLog(@"%@",x);
    }];
    //数组遍历.
    [arr.rac_sequence.signal subscribeNext:^(id x) {
        NSLog(@"常用写法%@",x);
    }];
    //字典遍历RACTuple元组包装相应key:value
    [dic.rac_sequence.signal subscribeNext:^(id x) {
        NSLog(@"%@",x);
    }];

RAC开发中常见用法:

    1. 代替代理
    1. kvo
    1. 通知
    1. 监听事件
    1. 文本框改变

代码实现

//监听某个某个对象的方法是否调用:代理的rac另外一种实现
    [[self.reaVIew rac_signalForSelector:@selector(didClickAction:)] subscribeNext:^(id x) {
        NSLog(@"点击按钮,但无法传值,x:%@",x);
        /*
         点击按钮,但无法传值,x:<RACTuple: 0x60000039cea0> (
             "<UIButton: 0x7fc888c13890; frame = (97 63; 46 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x600000197e20>>"
         )
         */
    }];
    
    //替代kvo,需要手动导入另外的头文件默认没导入
    [self.reaVIew rac_observeKeyPath:@"frame" options:NSKeyValueObservingOptionNew observer:nil block:^(id value, NSDictionary *change, BOOL causedByDealloc, BOOL affectedOnlyLastComponent) {
        NSLog(@"frame属性发生改变");
    }];
    [[self.view rac_valuesForKeyPath:@"frame" observer:nil]subscribeNext:^(id x) {
       NSLog(@"frame属性发生改变%@",x);
    }];
    
    //监听事件
    UIButton *btn = [[UIButton alloc]init];
    [[btn rac_signalForControlEvents:UIControlEventTouchUpInside]subscribeNext:^(id x) {
        NSLog(@"按钮点击了");
    }];
    
    [[[NSNotificationCenter defaultCenter]rac_addObserverForName:UIKeyboardWillShowNotification object:nil]subscribeNext:^(id x) {
        NSLog(@"通知");
    }];
    
    //监听文本框
    UITextField *textField = [[UITextField alloc]init];
    [[textField rac_textSignal]subscribeNext:^(id x) {
        NSLog(@"文本框改变");
    }];

相关文章

  • RAC集合及其他用法

    RAC集合类: RACTuple:元组,类似NSArray,用来包装值 RACSequence:RAC中集合,用于...

  • RAC学习三(集合类RACTuple与RACSequence)

    RAC集合类 1、RACTuple RACTuple的用法类似于OC里的数组用法,从源码来看像是NSArray的再...

  • 记录ReactiveObjC的一些用法

    常见用法 rac_signalForSelector : 代替代理 rac_valuesAndChangesFor...

  • RAC

    ReactiveCocoa入门 学习RAC小记-适合给新手看的RAC用法总结RAC稍深入-适合新手学习RAC iO...

  • RAC的常见应用场景

    这里写RAC常见的应用场景 RAC集合 代替KVO 监听事件 代替通知 监听文本框5.代理 RAC集合 RACTu...

  • RAC常见用法(二)

    接着说RAC的常见用法 : 这是今天要说的几个常见用法: rac_liftSelector 当多个信号都被发送时,...

  • RAC集合

    元组 RACTuple *tuple = [RACTuple tupleWithObjectsFromArray...

  • RAC 集合

    RACTuple:元组类,类似NSArray,用来包装值. RACSequence:RAC中的集合类,用于代替NS...

  • RAC集合

  • RAC集合

    在RAC中可以使用RACSequence,来进行对数组以及字典的快速便利 1、RAC对字典进行遍历 对字典遍历出来...

网友评论

      本文标题:RAC集合及其他用法

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