ReactiveCocoa进阶——RACCommand的使用
总结:
1、RACSignal 和 RACSubject 的区别
RACSubject继承于RACSignal,所以RACSubject也是信号类型,使用场景有所区分
RACSignal:"一个方法,多个值"
RACSubject:"一个值,多个方法"
/*
创建信号,block 的返回值
1-- 返回一个RACDisposable 对象,允许在一个订阅被取消时执行一些
清理工作
2-- 返回 nil 表示不清理信号
*/
/* ======================== RACSignal ======================= */
//1.0 创建信号
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
//2.0 发送信号
[subscriber sendNext:@(1)];
[subscriber sendNext:@(2)];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
NSLog(@"信号被销毁");
}];
}];
//3.0 订阅信号,才会激活信号
[signal subscribeNext:^(id x) {
//block 调用时刻: 每当有信号发出数据,就会调用block
NSLog(@"RACSignal 接收到数据:%@",x);
}];
[signal subscribeNext:^(id x) {
//block 调用时刻: 每当有信号发出数据,就会调用block
NSLog(@"RACSignal 接收到数据:%@",x);
}];
/* ======================== RACSubject ======================= */
//1.0 创建信号
RACSubject *subject = [RACSubject subject];
//2.0 订阅信号
[subject subscribeNext:^(id x) {
NSLog(@"RACSubject 收到信号1:%@",x);
}];
[subject subscribeNext:^(id x) {
NSLog(@"RACSubject 收到消息2:%@",x);
}];
//3.0 发送信号
[subject sendNext:@(1)];
[subject sendNext:@(2)];
输出结果: