iOS. ReactiveObjC

好久么有更新了,今天给大家分享一个小小的第三方,但是他的用处却很广泛。
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;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文是对ReactiveObjC部分使用介绍,原理及流程简介,见文章结尾 目录: 1、简单使用 2、UIKit (基...
    湘郎阅读 1,807评论 0 1
  • 原文链接: https://github.com/Draveness/analyze/blob/master/co...
    红红宝宝阅读 673评论 0 1
  • 什么是RAC: git 重量型开源项目,主要是针对各种事件的处理 。什么是响应式编程:一个简单的理解:如果a + ...
    York_Lee阅读 556评论 0 0
  • 1.此处使用https://github.com/ReactiveCocoa/ReactiveObjC.git p...
    流年易逝_李阅读 214评论 0 0
  • 前言由于公司需使用RAC+MVVM模式要写业务逻辑,对于rac菜鸡的我,不得不补习下功课,在RAC中,万物皆信号。...
    flowerflower阅读 5,259评论 19 18