美文网首页
RAC的使用

RAC的使用

作者: 买买提不撸串 | 来源:发表于2018-01-04 16:38 被阅读0次

    一、准备

    1、在终端cd "工程目录"进入工程目录下,

    2、vim Podfile建一个Podfile文件: 注意执行vim Podfile命令后要再按下键盘上的"i"建进入编辑模式,这时可以输入Podfile文件要下载的第三方框架Reactive cococa,或者按esc后直接 “:wq”保存退出,在工程中找到Podfile在这里添加要下载的框架

    platform :ios, "9.0"

    target 'cocoa001' do  //'引号中是工程名'

    pod 'ReactiveObjC','~>3.0.0' //目前3.0版本较稳定

    end

    3、执行pod install 命令下载Reactive cococa框架,完成后打开

    cocoaPods常用命令:  sudo gem install cocoapods  //下载安装

                                           pod setup                               //设置Pod本地仓库

                                           pod install                               //执行Podfile文件下载SDK

                                           pod update                            //更新Podfile文件

    二、使用

    1、入门

     //创建信号

       //创建一个数组,在信号对象中

        RACSubject*subject=[RACSubject subject];

        //创建一个订阅者,将Block保存到订阅者中,再将订阅者保存到上面创建的数组里面

        [subject subscribeNext:^(id  _Nullable x) {

            NSLog(@"%@",x);

        }];

        //发送信号

        //遍历信号对象中的数组,取出订阅对象!调用订阅对象中的Block.执行

        [subject sendNext:@"嘿嘿嘿"];

    2 、监听textfiled输入框的变化

    [_textFiled.rac_textSignal subscribeNext:^(NSString * _Nullable x) {

            NSLog(@"%@",x);

        }];

    3、倒计时

    //定义三个变量

    @property(nonatomic,assign)int time;

    @property(nonatomic,strong)RACDisposable*dispol;

    @property(nonatomic,strong)RACSignal*single;

    //倒计时

        btn.enabled=NO;//先改变btn状态

        _time=10;

        //如果源信号是RACSubject,由于RACSubject会持有订阅者,所以产生了循环引用(内存泄漏);

      // 如果源信号是RACSignal,由于RACSignal不会持有订阅者,那么也就不存在循环引用。

        _single=    [RACSignal interval:1.0 onScheduler:[RACScheduler mainThreadScheduler]];

        _dispol=[ _single subscribeNext:^(NSDate * _Nullable x) {

            _time--;

            if (_time>0) {

               [btn setTitle:[NSString stringWithFormat:@"等待%i秒",_time] forState:UIControlStateDisabled];

                btn.enabled=NO;

            }else{

                [btn setTitle:@"重新发送" forState:UIControlStateNormal];

                btn.enabled=YES;

                //取消订阅

                [_dispol dispose];

            }

       }];

    RAC和内存管理文章:https://www.jianshu.com/p/052c73fdf019

    相关文章

      网友评论

          本文标题:RAC的使用

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