RAC基础

作者: 开发界小学生 | 来源:发表于2018-10-07 10:18 被阅读0次

获得信号的方式

1.Cocoa桥接

    UIView * view;
    UIButton * view1;
    RACSignal * sig = [view rac_signalForSelector:@selector(setFrame:)];
    RACSignal * sig1 = [view1 rac_signalForControlEvents:UIControlEventTouchUpInside];
    RACSignal * sig2 = RACObserve(view, backgroundColor);

2.信号变换

    RACSignal *signal3 = [sig map:^id _Nullable(NSString * value) {
            return [value substringFromIndex:1];
     }];

3.序列转换
RACSignal * sig4 = [RACSequence new].signal;

订阅信号的基本方式

1.订阅

     [sig subscribeNext:^(id  _Nullable x) {
        
      } error:^(NSError * _Nullable error) {
        
      } completed:^{
        
      }];

2.绑定

      RAC(view, backgroundColor) = sig;
3.Cocoa桥接
       [view rac_liftSelector:@selector(convertRect:toView:) withSignals:sig,sig1];
       [view rac_liftSelector:@selector(convertRect:toView:) withSignalsFromArray:@[sig,sig1]];
       [view rac_liftSelector:@selector(convertRect:toView:) withSignalOfArguments:sig1];

Rac的数量操作

1.fliter:[[self.textField.rac_textSignal filter:^BOOL(NSString * _Nullable value) {
              NSLog(@"%@",value);
              return [value length] > 5;
            }] subscribeNext:^(NSString * _Nullable x) {
                NSLog(@"%@", x);
             }];
2.take:RACSignal *sigD = [sigA take:1];
3.skip: RACSignal *sigD = [sigA skip:1];
4.startWith:RACSignal *sigD = [sigA startWith:@1];
5.repeat:RACSignal *sigD = [sigA repeat];
6.Retry:RACSignal *sigD = [sigA retry:2];

Rac时间操作

 1.delay:RACSignal *sigD = [sigA delay:1];
              RACSignal * interval = [[[RACSignal return:@"1"] delay:1] repeat];
              [interval subscribeNext:^(id  _Nullable x) {
                    NSLog(@"%@",x);
                }];

2.Throttle:RACSignal * interval = [[RACSignal return:@"1"] throttle:2];
                  [interval subscribeNext:^(id  _Nullable x) {
                  NSLog(@"%@",x);
                }];  
              解释:每两秒以最后一个值为节点。推迟两秒订阅新值

Rac多个信号的组合

  1.Concat: RACSignal * conSig = [sigB concat:sigA];
  2.RACSignal * sigmer = [sigA merge:sigB];
    RACSignal * sigmer = [RACSignal merge:@[sigA,sigB]];
    RACSignal * sigmer = [RACSignal merge:RACTuplePack_(sigA,sigB)];
![4A93B471-3781-4DBA-B1E5-192117107C4D.png](https://img.haomeiwen.com/i9717104/4ac310260c432cfa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3.zip:RACSignal * sig1= [[self rac_signalForSelector:@selector(viewWillAppear:)] mapReplace:@"我是出现"];
    RACSignal * sig2 = [[self rac_signalForSelector:@selector(viewWillDisappear:)] mapReplace:@"我是销毁"];
    RACSignal * sig3 = [sig1 zipWith:sig2];

解释:希望同时获取两个新号。不分顺序

相关文章

  • RAC 详细解析

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

  • RAC基础

    获得信号的方式 1.Cocoa桥接 2.信号变换 3.序列转换RACSignal * sig4 = [RACSeq...

  • RAC基础

    RAC(ReactiveCocoa) 简单的说,RAC就是一个第三方库,他可以大大简化你的代码过程。 官方的说,R...

  • RAC 基础

    1.signal 2.RACSubject 3.RACTuple 元组类似一个数据的包装 ,类似是Dic的封装;S...

  • RAC基础

    RAC是一套基于Cocoa的FRP框架,它的优点是用户的输入转化为随时间改变的函数,取消了可变状态.在RAC的世界...

  • RAC基础

    最近接触学习到了RAC(ReactiveCocoa),RAC是函数式+响应式编程结合 我们在iOS开发中,页面之间...

  • 收录 : iOS - ReactiveCocoa(RAC)

    美团RAC技术文档 ReactiveCocoa基础ReactiveCocoa进阶 ReactiveCocoa教程:...

  • ReactiveObjC(RAC)基础

    最近学习了一下RAC的使用,参考了下面两篇文章 Jonzzs的【iOS 开发】ReactiveObjC(RAC)的...

  • iOS RAC学习

    一、RAC使用基础认知 RAC编程思想:响应式编程+函数式编程 在iOS中,类之间的传值,无非就是block、de...

  • 菜鸟用RAC基于AFNetworking 3.0网络的封装搭建记

    前言 这几天自己在学习RAC,学习了几天对RAC有了一定基础了解,如之前写的菜鸟开始学习ReactiveObjc运...

网友评论

      本文标题:RAC基础

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