好久么有更新了,今天给大家分享一个小小的第三方,但是他的用处却很广泛。
1,首先介绍下这个框架:
ReactiveObjC是ReactiveCocoa的Objective-C版本,它是一个函数响应式编程框架,ReactiveObjC库的组成主要分为Core和UI两个大类。核心库定义的是RAC的一些类型和方法,UI部分是对Cocoa框架中的UI类进行RAC的扩展。
ReactiveObjC的基本使用:
需要通过pod倒入:
pod 'ReactiveObjC'
2,ReactiveObjC主要有三个关键类:
1、RACSignal信号RACSignal 是各种信号的基类,其中RACDynamicSignal是用的最多的动态信号
2、RACSubscriber订阅者
RACSubscriber是实现了RACSubscriber协议的订阅者类,这个协议定义了4个必须实现的方法
3、RACDisposable清洁工
RACDisposable主要是对资源的释放处理,其中使用RACDynamicSignal时,会创建一个RACCompoundDisposable管理清洁工对象。其内部定义了两个数组,一个是_inlineDisposables[2]固定长度2的A fast array,超出2个对象的长度由_disposables数组管理,_inlineDisposables数组速度快,两个数组都是线程安全的。
3,在项目中我主要用到了RACSignal:
[[self.tf_password rac_textSignal] subscribeNext:^(NSString * _Nullable x) {
ViewBorderRadius(weakSelf.view_password, 25, 1, UIColor.whiteColor);
self.tf_password.textColor = [UIColor jk_colorWithHexString:@"#222222"];
}];
//监听按钮点击事件
[[_btn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {
NSLog(@"-->%@",x);
}];
计时器的使用:
//类似timer
@weakify(self)
self.disposable = [[RACSignal interval:2 onScheduler:[RACScheduler mainThreadScheduler]] subscribeNext:^(NSDate * _Nullable x) {
@strongify(self)
NSLog(@"时间:%@", x); // x 是当前的时间
//关闭计时器
[self.disposable dispose];
}];
//延时
[[[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@"延时2秒"];
return nil;
}] delay:2] subscribeNext:^(id x) {
NSLog(@"-->%@",x);
}];
监听属性变化:
//监听self的name属性
[RACObserve(self, name) subscribeNext:^(id _Nullable x) {
NSLog(@"属性的改变-->%@",x);
}];
[[self rac_valuesForKeyPath:@"name" observer:self] subscribeNext:^(id _Nullable x) {
NSLog(@"属性的改变-->%@", x);
}];
//此处RAC宏相当于让_label订阅了_textField的文本变化信号
//赋值给label的text属性
RAC(_label, text) = _textField.rac_textSignal;
网友评论