iOS 之 RAC的简单使用1

首先利用 cocoapods 将RectiveCocoa集成到项目中去。

ReactiveCocoa是函数响应式编程!

响应式编程思想:一种面向数据流和变化传播的编程范式。

代表:KVO

函数式编程思想:把操作尽量写成一系列的嵌套函数或着方法调用。

函数式特点:每个方法必须有返回值(对象本身),把函数或者block当作参数,block参数(需要操作的值),block返回值(操作结果);

代表:ReactiveCocoa

链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性更好。例如massory 中的添加约束:make.left.right.top.bottom.equalTo(10) 便是链式编程思想;

导入#import头文件

1.  RACSignal信号类 以及 RACDisposable

//RACSignal:信号类,当我们有数据产生,创建一个信号!

//1.创建信号(冷信号!)

//didSubscribe调用:只要一个信号被订阅就会调用!!

//didSubscribe作用:利用subscriber发送数据!!

RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id subscriber) {

//3.发送数据subscriber它来发送

[subscriber sendNext:@"呵呵哈哈嘿嘿"];

return [RACDisposabledisposableWithBlock:^{

//只要信号取消订阅就会来这里

//清空资源!!

NSLog(@"哥么来了!!");

}];

}];

//2.订阅信号(热信号!!)

//nextBlock调用:只要订阅者发送数据就会调用!

//nextBlock作用:处理数据,展示UI界面!

RACDisposable* disposable = [signal subscribeNext:^(idx) {

//x:信号发送的内容!!

NSLog(@"%@",x);

}]; 

//默认一个信号发送数据完毕就会主动取消订阅

//只要订阅者在(即将订阅者强引用,在函数结束的时候订阅者也不会被释放),就不会自动取消订阅

//手动取消订阅

[disposable dispose];


2.RACSubject

//1.创建信号

RACSubject* subject = [RACSubject subject];

//2.订阅信号

//不同的信号订阅的方式不一样!!(因为类型不一样,所以调用的方法不一样)

//RACSubject处理订阅:拿到之前的_subscribers保存订阅者

[subjectsubscribeNext:^(idx) {

NSLog(@"接受到了数据:%@",x);

}];

//3.发送数据

//遍历出所有的订阅者,调用nextBlock

[subjectsendNext:@"汉堡包"];


你可能感兴趣的:(iOS 之 RAC的简单使用1)