RAC的使用

2018-01-04  本文已影响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

上一篇 下一篇

猜你喜欢

热点阅读