零、类结构关系
1.RACSubject::RACSignal::RACStream.
2.最基础的东西:创建信号,发送信号、订阅信号
RACSignal *aSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@"谁关心这个信号?"];//发送
return nil;
}];
3.订阅者:
[signal subscribeNext:^(id x) {
NSLog(@"%@", x);//这里打印“谁关心这个信号”
}];
4.RACSubscriber protocol: sendCompleted,subscribeNext:completed:
一、RAC宏与RACObserve宏的不同点和使用技巧
1. RAC(object, property) = RACObserve(anotherObject, anotherProperty);
2. anotherProperty属性类型要与property的一模一样, 否则在map出来转化类型,return给前面的property一致即可
二、RAC在常见的一些控件、通知的使用,让代码变简洁;【"学会了什么是RACSignal"】
比如 [控件变量 rac_signalXxx] subscribeNex:^(){这里就是当控件的某个变量或状态发生改变时要执行的业务逻辑}];
rac支持代理、通知、KVO等;
三、学习RACStream(消息流)
1.filter、Skip、map、startWith等等;
2.因为RACSignal::RACStream,故直接就有流操作;
五、学习RACSubject(用于代替代理)
RACSubject *subject = [RACSubject subject];
[subject subscribeNext:^(id x) {
NSLog(@"订阅者1:%@", x);
}];
[subject sendNext:@"subject1"];
[subject subscribeNext:^(id x) {
NSLog(@"订阅者2:%@", x);
}];
[subject sendNext:@"subject2"];
2017-09-28 11:32:40.028 demo[7131:42883] 订阅者1:subject1
2017-09-28 11:32:40.029 demo[7131:42883] 订阅者1:subject2
2017-09-28 11:32:40.029 demo[7131:42883] 订阅者2:subject2
六、RACCommand与RACSubject的比较(主要用于按钮)
>>主要用于多种状态,点击、点击中、点击后
>>网络请求:开始、请求中、请求后;请求失败、请求成功;
//www.greatytc.com/p/b9d140b5763e
七、RACScheduler
[[RACScheduler mainThreadScheduler]afterDelay:5 schedule:^{
NSLog(@"五秒后执行一次");
}];
八、RACDisposable
1.可以为空,但如果需要提前终止的话,可以keep这个变量。