#pragma 1 signal
// 1.创建信号
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
//3. 发送信号
[subscriber sendNext:@"发送信号1"];
// 4.取消信号,如果信号想要被取消,就必须返回一个RACDisposable
// 信号什么时候被取消:1.自动取消,当一个信号的订阅者被销毁的时候机会自动取消订阅,2.手动取消,
//block什么时候调用:一旦一个信号被取消订阅就会调用
//block作用:当信号被取消时用于清空一些资源
return [RACDisposable disposableWithBlock:^{
NSLog(@"取消订阅");
}];
}];
// 2.订阅信号
//subscribeNext
// 把nextBlock保存到订阅者里面
// 只要订阅信号就会返回一个取消订阅信号的类
RACDisposable *disposable = [signal subscribeNext:^(id _Nullable x) {
NSLog(@"信号内容1:%@",x);
}];
// 取消订阅
[disposable dispose];
// //把信号转化为连接类
// RACMulticastConnection *multicastConnection = [signal publish];
// //订阅连接类信号
// [multicastConnection.signal subscribeNext:^(id x) {
// NSLog(@"连接类1%@",x);
// }];
// [multicastConnection.signal subscribeNext:^(id x) {
// NSLog(@"连接类2%@",x);
// }];
// [multicastConnection.signal subscribeNext:^(id x) {
// NSLog(@"连接类3%@",x);
// }];
// //连接
// [multicastConnection connect];
#pragma 2 RACSubject
/* 创建信号 */
RACSubject *subject = [RACSubject subject];
/* 订阅信号(通常在别的视图控制器中订阅,与代理的用法类似&#x