ReactiveCocoa的版本演变
2.x 版本
- 2.x 版本是纯OC的。
- 在pod的导入方式
pod 'ReactiveCocoa', '~> 2.5'
3.0 版本
- 从 ReactiveCocoa 3.0 开始包含第一个官方 Swift API,旨在最终完全取代 Objective-C API。
- 因迁移困难且耗时,且 OC 仍在广泛使用2.x版本,因此 99% 的 RAC 2.x 代码将继续在 RAC 3.0 中保留,也无需任何更改。因为3.0 的变化完全是附加的。
- 如果纯OC的工程使用 3.0版本,在pod中会报 Swift版本未指定的错误,具体解决办法参考 pod错误处理
4.0 版本
- 依然包含 2.x的功能代码
- 仅支持 Swift2.1.x。所以如果使用此版本,在现在swift已经是5.x的情况下,编译时xcode会报错:
SWIFT_VERSION '2.3' is unsupported, supported versions are: 4.0, 4.2, 5.0.
- 4.x与3.x 最大的变化是,SignalandSignalProducer运算符被实现为协议扩展而不是全局函数。
5.0 版本后
- 在 5.0 版本中,
ReactiveCocoa
被拆分为多个存储库。 - 原来和 Swift 相关的核心代码被单独抽取成了一个新框架:
ReactiveSwift
- 原来和 OC 相关的核心代码被单独抽取成了一个新框架:
ReactiveObjC
。,它具有 2.x 中的所有 OC 代码。 - 只使用 OC API,则使用
ReactiveObjC
库。 - 只使用 Swift API,则使用
ReactiveCocoa
库,但还需要ReactiveSwift
,它是ReactiveCocoa
的依赖库 - 同时使用 Swift 和 OC API,则需要
ReactiveObjC
,ReactiveCocoa
和ReactiveObjCBridge
,ReactiveSwift
关于ReactiveObjCBridge。在把 Swift 和 OC 的库拆分之后问题来了,并不是所有的库都是纯 OC 和 Swift 的。有相当大一部分项目处于 OC 迁移到 Swift 过程中,其中可能使用 Swift 调用了 RAC 2 中基于 OC 写的 API。为了解决这部分用户的问题,所以有了 ReactiveObjCBridge 。