美文网首页iOS Developer
ReactiveCocoa 5.0 版本大变样

ReactiveCocoa 5.0 版本大变样

作者: SwordDevil | 来源:发表于2017-02-27 09:59 被阅读124次

    RAC 5.0 相比于 4.0 有了巨大的变化,不仅是受 swift 3.0 大升级的影响,RAC 对自身项目结构的也进行了大幅度的调整。这个调整就是将 RAC 拆分为四个库:ReactiveCocoa、ReactiveSwift、ReactiveObjC、ReactiveObjCBridge。这样的大改变,对于我们使用来说,还是方便的,只是pod框架的方式不一样而已。

    ReactiveCocoa

    现在的 RAC 注意力主要集中在 Swift 和 UI 层上,将原来一个基于 RAC 面向 UI 层的扩展库 Rex 合并进了 RAC 。
    RAC 3 和 4 的主要精力在围绕 Swift 重新打造一个响应式编程库。因为这部分的核心 API 已经很成熟,所以现在将重心放在为 AppKit 和 UIKit 提供一些更好用的扩展上。

    目前的ReactiveCocoa 5.0版本是纯swift编写的,导入pod 'ReactiveCocoa' 框架的同时,会自动将ReactiveSwift框架导入。

    ReactiveSwift

    原来 RAC 中只和 Swift 平台相关的核心代码被单独抽取成了一个新框架:ReactiveSwift
    Swift 正在快速成长并且成长为一个跨平台的语言。把只和 Swift 相关的代码抽取出来后,ReactiveSwift 就可以在其他平台上被使用,而不只是局限在 CocoaTouch 和 Cocoa 中。

    ReactiveObjC

    在 RAC 3 和 4 中,RAC 也包含了 RAC 2 中的 OC 代码。现在这部分代码被移到了ReactiveObjC
    这样做的原因是因为两个库虽然有着一样的核心编程范式,实际上却是完全独立的两套 API 。实际的使用中,RAC 4 和 RAC 2 是完全不同的两组用户群,并且维护的团队其实也是两组。之前混在一个库里也增加了管理的复杂度。拆分出去后也可以更加自由的维护 ReactiveObjC 。

    注:ReactiveObjC是纯OC代码编写的,如果你的项目是纯OC的话,
    直接pod 'ReactiveObjC'

    ReactiveObjCBridge

    在把 Swift 和 OC 的库拆分之后问题来了,并不是所有的库都是纯 OC 和 Swift 的。有相当大一部分项目处于 OC 迁移到 Swift 过程中,其中可能使用 Swift 调用了 RAC 2 中基于 OC 写的 API。为了解决这部分用户的问题,所以有了 ReactiveObjCBridge

    注:他是OC跟Swift混编

    那么在项目里现在到底要引入哪些框架呢

    如果你只是纯 swift 项目,你继续使用 ReactiveCocoa 。但是 RAC 依赖于 ReactiveSwift ,等于你引入了两个库。

    pod 'ReactiveCocoa'
    

    如果你的项目是纯 OC 项目,你需要使用的是 ReactiveObjC 。这个库里面包含原来 RAC 2 的全部代码。

    pod 'ReactiveObjC'
    

    如果你的项目是 swift 和 OC 混编,你需要同时引用 ReactiveCocoa 和 ReactiveObjCBridge 。但是 ReactiveObjCBridge 依赖于 ReactiveObjC ,所以你就等于引入了 4 个库。

    pod 'ReactiveCocoa'
    pod 'ReactiveObjCBridge'
    

    相关链接:RAC change log


    结束语

    到这里就结束了,如若不懂的话可以👇留言,也可以加入群讨论
    喜欢的话 记得关注、收藏、点赞哟

    群号:552048526

    相关文章

      网友评论

      • 西叶lv:ReactiveObjCBridge没看出来有OC啊??
        SwordDevil:你直接pod ReactiveObjC 不就出来oc的吗
      • IAMCifi:这个ReactiveObjCBridge 可以pod???
        SwordDevil:@shinephe 不用pod他 他是自动pod的 你pod 那个objc 久自动pod他了
      • Wy_chris:我这 直接pod 'ReactiveObjC' 出现这个错误 Unable to find a specification for `ReactiveObjC` ?
        Wy_chris:@SwordDevil :pray: 蟹蟹
        Wy_chris:@SwordDevil 哦哦 明白了。
        SwordDevil:@Wy_chris 如果你的pod不是最新版本的话 你还是直接pod 'ReacticeCocoa'

      本文标题:ReactiveCocoa 5.0 版本大变样

      本文链接:https://www.haomeiwen.com/subject/wwxzwttx.html