1.ReactiveCocoa简介
ReactiveCocoa(简称为RAC
),是由Github
开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾。
安装:https://www.jianshu.com/p/57a0d69b98f0
use_frameworks!
pod 'ReactiveCocoa'
pod 'ReactiveObjC'
//完成之后去除Swift(要一起导入才能拉下来),只保留ReactiveObjC,重新pod install
导入头文件 #import “ReactiveObjC.h”
2.ReactiveCocoa作用
ReactiveCocoa为事件提供了很多处理方法,而且利用RAC处理事件很方便,可以把要处理的事情,和监听的事情的代码放在一起
,这样非常方便我们管理,就不需要跳到对应的方法里。非常符合我们开发中高聚合,低耦合
的思想。
3.编程思想
编程思想的由来
:在开发中我们会遇见各种各样的需求,经常会思考如何快速的完成这些需求,这样就会慢慢形成快速完成这些需求的思想。
先简单介绍下目前咱们已知的编程思想
。
3.1 面向过程
:处理事情以过程为核心,一步一步的实现。
3.2 面向对象
:万物皆对象
3.3 链式编程思想
:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)
-
链式编程特点
:方法的返回值是block
,block必须有返回值(本身对象),block参数(需要操作的值) -
代表
:masonry框架。
3.4 响应式编程思想
:不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生一个事件,会影响很多东西,这些事件像流一样的传播出去,然后影响结果,借用面向对象的一句话,万物皆是流。
代表
:KVO运用。
3.5 函数式编程思想
:是把操作尽量写成一系列嵌套的函数或者方法调用。
-
函数式编程本质
:就是往方法中传入Block,方法中嵌套Block调用,把代码聚合起来管理 -
函数式编程特点
:每个方法必须有返回值(本身对象),把函数或者Block当做参数
,block参数(需要操作的值)block返回值(操作结果) -
代表
:ReactiveCocoa。
4.ReactiveCocoa编程思想
ReactiveCocoa结合了几种编程风格:
函数式编程(Functional Programming)
响应式编程(Reactive Programming)
所以,你可能听说过ReactiveCocoa被描述为函数响应式编程(FRP)框架。
以后使用RAC解决问题,就不需要考虑调用顺序,直接考虑结果
,把每一次操作都写成一系列嵌套的方法中,使代码高聚合,方便管理。
5, ReactiveCocoa原理
// RACSignal底层实现:
// 1.创建信号,首先把didSubscribe保存
到信号中,还不会触发。
// 2.当信号被订阅,也就是调用signal的subscribeNext:nextBlock
// 2.1 subscribeNext内部会调用siganl的didSubscribe
// 2.2 subscribeNext内部会创建订阅者subscriber,并且把nextBlock保存
到subscriber中。
// 3.siganl的didSubscribe中调用[subscriber sendNext:@1];
// 3.1 sendNext底层其实就是执行subscriber的nextBlock
步骤代码
#import "ReactiveObjC.h"
@interface ViewController ()
@property (nonatomic, strong) RACSignal * single;
@end
@implementation ViewController
- (void)viewDidLoad {