Front-end
Apple
Apple
  • 第三方库
    • RAC库
      • ReactiveObjc
        • 如何实现的
        • 有关类
        • 有关协议
        • 关键概念列表
          • RACSignal有关类
            • RACStream
              • 头文件定义
            • RACSignal
              • 头文件定义内容
              • 核心代码
              • 常用的方法
                • concat:
                • bind:
                • zipWith 和merge
            • RACSubject
              • 内容
            • RACReplaySubject
              • 内容
            • RACBehaviorSubject
              • 内容
            • RACGroupedSignal
              • 内容
            • RACDynamicSignal
              • RACDynamicSignal
              • RACSignal vs RACDynamicSignal
            • RACReturnSignal
              • 内容
            • RACErrorSignal
            • RACEmptySignal
            • RACChannelTerminal
            • 疑问
              • RACChannelTerminal vs RACSubject
              • RACSignal vs RACStream
              • 热信号和冷信号
                • 进一步理解
              • 信号的发送者和接受者
                • RACSignal 不是信号对象么?为什么信号的发送者是自己呢?
          • RACChannel有关类
            • RACChannel
              • Page 1
              • 用于MVVM架构
              • RAC() vs RACChannelTo()
            • RACKVOChannel
              • 内容
              • 封装了系统的KVO
          • RACCommand
          • RACSubscriber
          • RACTuple
          • RACSequence有关类
          • RACKVOTrampoline
            • NSObject+RACKVOWrapper.h
            • NSObject+RACKVOWrapper.m
          • Page
          • 宏
          • 疑问
            • RACCommand vs RACSignal
            • 有了信号量,为什么还需要RACCommand
        • 操作方法
          • reduce
            • reduce 在不同语言以及库中是否一样的概念?
      • ReactiveSwift
        • 相比ReactiveObjc
      • RxSwift
      • Combine
      • 疑问
        • 热信号 vs 冷信号
        • ReactiveObjC 和 ReactiveSwift 实现原理差异
        • ReactiveObjC、ReactiveCocoa、ReactiveSwift的关系与区别
        • ReactiveObjC、ReactiveCocoa、ReactiveSwift内容
        • ReactiveSwift vs RxSwift
        • RxSwift、ReactiveSwift 和 ReactiveObjC
        • RxSwift、ReactiveSwift 、Combine
    • swift源码
      • 编译
        • 命令参数解释
        • 涉及到的工具
          • cmake 和 ninja
          • sccache
        • Rosetta模式
        • 遇到问题
          • FETCH_HEAD': Permission denied
          • --local_compiler_build': No such file or directory
          • ld: unsupported tapi file type '!tapi-tbd' in YAML file
          • python --version 显示没有这个命令
          • ModuleNotFoundError: No module named 'packaging'
          • ModuleNotFoundError: No module named 'sphinx'
            • sphinx是什么
          • ERROR: Could not find a version that satisfies the requirement sphinx (from versions: none)
          • /Applications/Python\ 3.x/Install\ Certificates.command 失败
          • 已经安装了sphinx,还是显示错误
      • 涉及到的知识点
        • Swift中的MCCAS
Powered by GitBook
On this page
  1. 第三方库
  2. RAC库
  3. 疑问

RxSwift、ReactiveSwift 和 ReactiveObjC

下面是 RxSwift、ReactiveSwift 和 ReactiveObjC 三者之间的关系与区别,以表格的形式列出:

特性
RxSwift
ReactiveSwift
ReactiveObjC

起源

基于 Rx 标准 (Reactive Extensions)

基于 ReactiveCocoa,原生 Swift 实现

基于 Objective-C,ReactiveCocoa 的起点

支持语言

Swift

Swift

Objective-C

核心类型

Observable

Signal 和 SignalProducer

RACSignal、RACSequence

线程调度

使用 Schedulers 控制线程

使用 Scheduler 控制线程

使用 RACScheduler 控制线程

异步流

事件流通过 Observable 序列管理

Signal 用于即时事件,SignalProducer 用于惰性计算

RACSignal 用于事件流

操作符支持

支持 Rx 标准的丰富操作符

提供更 Swift 化的操作符

提供 ReactiveCocoa 风格的操作符

平台支持

iOS、macOS (跨平台 Rx 家族成员)

iOS、macOS (主要 Swift 生态)

iOS、macOS (Objective-C 项目)

典型应用

跨平台应用、响应式编程

纯 Swift 项目,注重与 Swift 的兼容性

旧版项目、Objective-C 项目

社区和资源

受 Rx 家族支持,资源丰富

Swift 专用,资源相对较少

社区较小,主要用于维护旧项目

常见扩展

RxCocoa 用于 UIKit 和 Foundation 扩展

与 Swift 原生库兼容

集成较少,配合其他 Cocoa 框架使用

总结来看,三者关系紧密但各有侧重点:

  • RxSwift 和 ReactiveSwift 都源自响应式编程理念,前者基于 Rx 标准,后者则从 Objective-C 的 ReactiveCocoa 演化而来,适合 Swift。

  • ReactiveObjC 则是较老的 Objective-C 版本,适合维护旧有 Objective-C 项目。

PreviousReactiveSwift vs RxSwiftNextRxSwift、ReactiveSwift 、Combine

Last updated 8 months ago