导读
简单的说,RAC就是一个第三方库,他可以大大简化你的代码过程。
官方的说,ReactiveCocoa(其简称为RAC)是由GitHub开源的一个应用于iOS和OS X开发的新框架。RAC具有函数式编程和响应式编程的特性。
先来上demo链接
RACSignal总结:
/**
* RACSignal总结:
一. 核心:
1.核心:信号类
2.信号类的作用:只要有数据改变就会把数据包装成信号传递出去
3.只要有数据改变就会有信号发出
4.数据发出,并不是信号类发出,信号类不能发送数据
二. 使用方法:
1.创建信号
2.订阅信号
三. 实现思路:
1.当一个信号被订阅,创建订阅者,并把nextBlock保存到订阅者里面。
2.创建的时候会返回 [RACDynamicSignal createSignal:didSubscribe];
3.调用RACDynamicSignal的didSubscribe
4.发送信号[subscriber sendNext:value];
5.拿到订阅者的nextBlock调用
*/
重申下
// RAC的核心就是信号,即RACSignal。
信号可以看做是传递信号的工具,当数据变化时,信号就会发送改变的信息,以通知信号的订阅者执行方法。
热/冷信号
默认一个信号都是冷信号,也就是值改变了,也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变了才会触发。
//创建信号
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(idsubscriber){
[subscriber sendNext:@"signal"];
[subscriber sendCompleted];
return nil;
}];
//订阅信号
[signal subscribeNext:^(id x){
DLog(@"x = %@", x);
} error:^(NSError *error){
DLog(@"NSError = %@", error);
}completed:^{
DLog(@"completed");
}];
RACSubject总结:
/**
* RACSubject总结:
我们完全可以用RACSubject代替代理/通知,确实方便许多
这里我们点击TwoViewController的pop的时候 将字符串"ws"传给了ViewController的button的title。
步骤:
// 1.创建信号
RACSubject *subject = [RACSubject subject];
// 2.订阅信号
[subject subscribeNext:^(id x) {
// block:当有数据发出的时候就会调用
// block:处理数据
NSLog(@"%@",x);
}];
// 3.发送信号
[subject sendNext:value];
**注意:~~**
RACSubject和RACReplaySubject的区别
RACSubject必须要先订阅信号之后才能发送信号, 而RACReplaySubject可以先发送信号后订阅.
RACSubject 代码中体现为:先走第二个(TwoViewController)的sendNext,后走第一个(ViewController)的subscribeNext订阅
RACReplaySubject 代码中体现为:先走第一个(ViewController)的subscribeNext订阅,后走第二个(TwoViewController)的sendNext
可按实际情况各取所需。
*/
网友评论