- 1,为什么要用RACMulticastConnection:
//如下,有的时候多次订阅只是想要拿到请求的数据,不需要多次请求,因为多次请求会浪费资源,影响速度,所以下面的常规方法就不太适用了
//因为每订阅一次,就会调用信号中的block一次,也就是需要发送多次相同的网络请求
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"发送数据请求");
[subscriber sendNext:@"请求得到的数据"];
return nil;
}];
[signal subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
[signal subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
}
- 2.1,如何使用RACMulticastConnection:(只请求一次,多次调用请求到的数据)
//1,创建信号
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"请求数据");
[subscriber sendNext:@"请求到的数据"];
return nil;
}];
//2,建立连接,使用这个方式建立连接只能先连接,后发送请求也就是订阅
RACMulticastConnection *multicaseConnection = [signal publish];
//3,发送请求
[multicaseConnection.signal subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
[multicaseConnection.signal subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
//4,注意:最后需要手动连接
[multicaseConnection connect];
- 2.2, 使用RACMulticastConnection:使用第二种建立连接的方式。