绑定应用场景:将一个发送回来信号的数据进行处理后再进行发送,即处理处理原信号内容
bind简单应用
//bind 绑定!
//1.创建信号
RACSubject * subject = [RACSubject subject];
//2.绑定信号
RACSignal * bindSignal = [subject bind:^RACSignalBindBlock _Nonnull{
return ^RACSignal * (id value, BOOL *stop){
//block调用:只要源信号发送数据,就会调用bindBlock
//block作用:处理原信号内容
//value:源信号发送的内容
NSString *value1 = [NSString stringWithFormat:@"处理后的数据:%@",value];
// NSLog(@"处理后的数据:%@",value);
//返回信号,不能传nil , 返回空信号 :[RACSignal empty]
return [RACReturnSignal return:value1];
};
}];
//3.订阅信号
[bindSignal subscribeNext:^(id _Nullable x) {
NSLog(@"接收到 %@",x);
}];
//4.发送
[subject sendNext:@"发送原始的数据"];
flattenMap简单应用
//flattenMap 一般用于信号中的信号
RACSubject * signalOfSignal = [RACSubject subject];
RACSubject * signal = [RACSubject subject];
[[signalOfSignal flattenMap:^__kindof RACSignal * _Nullable(id _Nullable value) {
return value;
}] subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
//发送信号
[signalOfSignal sendNext:signal];
[signal sendNext:@"123"];
Map简单应用
//创建信号
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"];