一、准备
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