#import "ViewController.h"
#import <ReactiveObjC.h>
#import <RACReturnSignal.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//flattenMap 一般用于信号中的信号
RACSubject * signalOfSignal = [RACSubject subject];
RACSubject * signal = [RACSubject subject];
//订阅信号
// [signalOfSignal subscribeNext:^(RACSignal * x) {
// [x subscribeNext:^(id _Nullable x) {
// NSLog(@"%@",x);
// }];
// }];
// [signalOfSignal.switchToLatest subscribeNext:^(id _Nullable x) {
// NSLog(@"%@",x);
// }];
[[signalOfSignal flattenMap:^__kindof RACSignal * _Nullable(id _Nullable value) {
return value;
}] subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
// [bindSignal subscribeNext:^(id _Nullable x) {
// NSLog(@"%@",x);
// }];
//发送信号
[signalOfSignal sendNext:signal];
[signal sendNext:@"123"];
}
-(void)mapDemo{
//创建信号
RACSubject * subject = [RACSubject subject];
//绑定
[[subject map:^id _Nullable(id _Nullable value) {
//返回的数据就是需要处理的数据
return [NSString stringWithFormat:@"处理数据%@",value];
}] subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
//发送数据
[subject sendNext:@"123"];
[subject sendNext:@"321"];
}
-(void)flattenMapDemo{
//创建信号
RACSubject * subject = [RACSubject subject];
//绑定信号
RACSignal * bindSignal = [subject flattenMap:^__kindof RACSignal * _Nullable(id _Nullable value) {
//block:只要源信号发送内容就会调用
//value:就是源信号发送的内容
value = [NSString stringWithFormat:@"处理数据:%@",value];
//返回信号用来包装修改过的内容
return [RACReturnSignal return:value];
}];
//订阅绑定信号
[bindSignal subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
//发送数据
[subject sendNext:@"123"];
}
5-1 RAC映射
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 2018.2.3 目标:身心健康,财富丰盛 好种子: 1早起健康早餐,种下健康的种子,回向群里姐妹及家人身心健康 ...
- java异常概念 java异常分类 异常的捕获和处理 运行期出现的错误是最难解决的. 观察错误名字和行号最重要! ...