RACCommand使用简介
来源:互联网 发布:美津浓2016跑鞋矩阵 编辑:程序博客网 时间:2024/05/23 00:10
RAC中用于处理事件的类,可以把事件如何处理,事件中的数据如何传递,包装到这个类中,他可以很方便的监控事件的执行过程。
本文转载自:http://www.jianshu.com/p/87ef6720a096
第一种方式,代码如下:
// 1. 创建命令
RACCommand command = [[RACCommand alloc] initWithSignalBlock:^RACSignal _Nonnull(id _Nullable input) {
// input 为执行命令传入的参数
// 该block为执行命令时调用
NSLog(@”input : %@”, input);
return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) {
// 发送数据
[subscriber sendNext:@”执行完命令后,反馈的数据”];
// * 数据发送完成
[subscriber sendCompleted];
return nil;
}];
}];
// 2. 执行命令
RACSignal *signal = [command execute:@5];
[signal subscribeNext:^(id _Nullable x) {
NSLog(@”%@”, x);
}];
第二种方式,代码如下:
// 1. 创建命令
RACCommand command = [[RACCommand alloc] initWithSignalBlock:^RACSignal _Nonnull(id _Nullable input) {
// input 为执行命令传入的参数
// 该block为执行命令时调用
NSLog(@”input : %@”, input);
return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) {
// 发送数据
[subscriber sendNext:@”执行完命令后,反馈的数据”];
// * 数据发送完成
[subscriber sendCompleted];
return nil;
}];
}];
// 2. 订阅信号(必须在执行命令前订阅信号)
// a—->executionSignals:信号源,信号中信号,发送数据就是信号
[command.executionSignals subscribeNext:^(id _Nullable x) {
NSLog(@”%@”, x);
[x subscribeNext:^(id _Nullable x) {
NSLog(@”%@”, x);
}];
}];
// b—->switchToLatest 获取最新发送的信号,只能用于信号中信号
[command.executionSignals.switchToLatest subscribeNext:^(id _Nullable x) {
NSLog(@”%@”, x);
}];
// 3. 执行命令
[command execute:@1];
添加监听事件有没有执行完成,代码如下:
// 1. 创建命令
RACCommand command = [[RACCommand alloc] initWithSignalBlock:^RACSignal _Nonnull(id _Nullable input) {
// input 为执行命令传入的参数
// 该block为执行命令时调用
NSLog(@”input : %@”, input);
return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) {
// 发送数据
[subscriber sendNext:@”执行完命令后,反馈的数据”];
// * 数据发送完成
[subscriber sendCompleted];
return nil;
}];
}];
// 2. 订阅信号(必须在执行命令前订阅信号)
[command.executionSignals.switchToLatest subscribeNext:^(id _Nullable x) {
NSLog(@”%@”, x);
}];
// 4. 监听命令是否执行完成
[command.executing subscribeNext:^(NSNumber * _Nullable x) {
if ([x boolValue] == YES) {
NSLog(@”当前正在执行”);
} else {
// 执行完成/没有执行
NSLog(@”执行完成/没有执行”);
}
}];
// 3. 执行命令
[command execute:@1];
响应UIButton的事件
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(100, 100, 100, 100);
button.backgroundColor = [UIColor redColor];
[self.view addSubview:button];
[[button rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {
NSLog(@”点击了按钮”);
}];
button.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) {
NSLog(@”触发事件”);
return [RACSignal empty];
}];
- RACCommand使用简介
- RACCommand使用总结
- ReactiveCocoa之RACCommand使用(五)
- ReactiveCocoa之RACCommand使用(五)
- ReactiveCocoa:理解和使用RACCommand
- ReactiveCocoa要点:理解和使用RACCommand
- ReactiveCocoa基本组件:理解和使用RACCommand
- ReactiveCocoa基本组件:理解和使用RACCommand
- ReactiveCocoa基本组件:理解和使用RACCommand
- ReactiveCocoa基本组件:理解和使用RACCommand
- UIButton使用RACCommand后setEnable方法失效的问题
- RACCommand 粗解
- #关于RACCommand的思考
- ReactiveCocoa基本组件:深入浅出RACCommand
- RACCommand 有sendError对executionSignals 怎么破
- ReactiveCocoa Essentials: Understanding and Using RACCommand
- RAC学习基础应用(四)--RACCommand
- OKHttp使用简介--使用
- 图片数据集太少?Keras Image Data Augmentation 各参数详解
- 「无中生有」计算机视觉探奇
- 文章标题
- 接触血压计板
- hadoop-3.0.0-beta1运维手册(005):hdfs3.0.0分布式构建-hdfs配置、无密码登录
- RACCommand使用简介
- C语言实现三子棋——详解
- 深度学习系列之三:循环神经网络 | 公开课
- 【OpenCV笔记二】OpenCV调用Mac摄像头
- C++构造函数与析构函数(二)
- 一个企业,需要这样的人
- 链表的一些操作
- blurkit-android背景模糊(图片和背景均可)
- 为什么我们要升级php