ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的一个框架。ReactiveCocoa函数式编程,同时为事件提供了很多处理方法,而且利用RAC处理事件很方便,可以把要处理的事情,和监听的事情的代码放在一起,这样非常方便我们管理,就不需要跳到对应的方法里。非常符合我们开发中高聚合,低耦合的思想。
RACSignal 信号,信号类,是RAC整个函数式相应编程的核心类;
/*
.核心:
.核心:信号类
.信号类的作用:只要有数据改变就会把数据包装成信号传递出去
.只要有数据改变就会有信号发出
.数据发出,并不是信号类发出,信号类不能发送数据
.使用方法:
.1创建信号
.2订阅信号
.实现思路:
.当一个信号被订阅,创建订阅者,并把nextBlock保存到订阅者里面。
.创建的时候会返回 [RACDynamicSignal createSignal:didSubscribe];
.调用RACDynamicSignal的didSubscribe
.发送信号[subscriber sendNext:value];
.拿到订阅者的nextBlock调用 */
具体使用如下:
// 1,创建信号
self.single = [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) {
//3,发送信号
[subscribersendNext:@"发送信号***数据***"];
// 4.取消信号,如果信号想要被取消,就必须返回一个RACDisposable
// 信号什么时候被取消:1.自动取消,当一个信号的订阅者被销毁的时候机会自动取消订阅,2.手动取消,
//block什么时候调用:一旦一个信号被取消订阅就会调用
//block作用:当信号被取消时用于清空一些资源
return [RACDisposable disposableWithBlock:^{
NSLog(@"取消订阅");
}];
}];
//2,订阅信号
//subscribeNext
// 把nextBlock保存到订阅者里面
// 只要订阅信号就会返回一个取消订阅信号的类
@weakify(self);
RACDisposable*disposable = [self.single subscribeNext:^(id _Nullable x) {
@strongify(self);
self.contentL.text= x;
NSLog(@"订阅数据**接收到的数据:%@",x);
}];
[disposabledispose];