RAC学习笔记

2017-10-15  本文已影响0人  优酷巧克力

零、类结构关系

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的比较(主要用于按钮)

>>主要用于多种状态,点击、点击中、点击后

>>网络请求:开始、请求中、请求后;请求失败、请求成功;

http://www.jianshu.com/p/b9d140b5763e

七、RACScheduler

[[RACScheduler mainThreadScheduler]afterDelay:5 schedule:^{

NSLog(@"五秒后执行一次");

}];

八、RACDisposable

1.可以为空,但如果需要提前终止的话,可以keep这个变量。

上一篇下一篇

猜你喜欢

热点阅读