news 2026/8/21 17:54:42

NSObject-Rx 安装全攻略:CocoaPods、Carthage 与 SwiftPM 三种方式终极对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NSObject-Rx 安装全攻略:CocoaPods、Carthage 与 SwiftPM 三种方式终极对比

NSObject-Rx 安装全攻略:CocoaPods、Carthage 与 SwiftPM 三种方式终极对比

【免费下载链接】NSObject-RxHandy RxSwift extensions on NSObject, including rx.disposeBag.项目地址: https://gitcode.com/gh_mirrors/ns/NSObject-Rx

对于正在使用 RxSwift 的 iOS 开发者来说,NSObject-Rx 安装几乎是每新建一个响应式项目都会遇到的环节。NSObject-Rx 是一个轻量级的 RxSwift 扩展库,它为所有 NSObject 子类自动提供rx.disposeBag属性,让你告别在每个类里手动声明let disposeBag = DisposeBag()的重复劳动。本文将从零开始,用最通俗的语言,带你一次性掌握NSObject-Rx 的三种主流安装方式——CocoaPods、Carthage 与 SwiftPM,并给出直观的终极对比,帮你快速选出最适合自己项目的方案。

上图正是 NSObject-Rx 诞生的原因:GitHub 上搜一下let disposeBag = DisposeBag(),能搜出 489 条几乎一模一样的重复声明 😅。这个库的核心实现其实非常简洁,全部源码只有两个文件:NSObject+Rx.swift 负责提供rx.disposeBag属性,HasDisposeBag.swift 则是一个协议,让不继承 NSObject 的类型也能拥有自己的disposeBag

安装前必看:环境与版本要求

在开始 NSObject-Rx 安装之前,先确认你的开发环境满足以下条件:

项目最低要求
iOS / tvOS9.0+
macOS10.10+
watchOS3.0+
Swift5.2+
RxSwift~> 6.2

最新版本为5.2.2(可查看 NSObject+Rx.podspec 确认版本号)。下面进入正题,逐一演示三种安装方式。

方式一:CocoaPods 安装 NSObject-Rx 的最快方法

CocoaPods 是 iOS 生态最老牌、资料最多的依赖管理工具,也是 NSObject-Rx 官方推荐的主要开发方式(项目自带的 Demo/Podfile 就是这么配的)。

一键安装步骤

  1. 确保已安装 CocoaPods:sudo gem install cocoapods
  2. 在项目根目录的Podfile中添加一行:
    pod 'NSObject+Rx'
  3. 执行pod install,之后必须用生成的.xcworkspace打开项目
  4. 在需要使用的地方import NSObject_Rx即可

小提示 💡

如果你的项目要指定版本,可以写成pod 'NSObject+Rx', '~> 5.2'。遇到 "No such module" 报错时,先检查是否使用了use_frameworks!,并清理一下 DerivedData。

方式二:Carthage 集成 NSObject-Rx 的完整配置流程

Carthage 的特点是「去中心化」:它只负责把依赖编译成 framework,集成工作由你自己在 Xcode 中完成,项目结构更干净,也更容易排查问题。

最快配置方法

  1. 安装 Carthage:brew install carthage
  2. 在项目根目录创建Cartfile,写入:
    github "RxSwiftCommunity/NSObject-Rx" ~> 5.2.2
  3. 运行carthage update --platform ios(只针对 iOS 平台,速度更快)
  4. 把编译好的RxSwift.frameworkNSObject_Rx.framework拖入项目的 Frameworks 目录(无需勾选 "Copy items if needed")
  5. 添加 Run Script 构建阶段,填入/usr/local/bin/carthage copy-frameworks,并在 Input Files 中列出两个 framework 路径
  6. 同样通过import NSObject_Rx使用

项目自身的 Cartfile 就是现成参考,依赖声明格式可以直接照抄。

方式三:SwiftPM 集成 NSObject-Rx 的原生方案

Swift Package Manager 从 Xcode 11 起就是苹果官方力推的依赖管理工具,无需任何额外安装,是目前上手成本最低的方案。

最简集成步骤

  1. 在 Xcode 菜单栏选择File > Add Package Dependencies...
  2. 输入仓库地址:https://gitcode.com/gh_mirrors/ns/NSObject-Rx,等待解析
  3. 选择版本规则(推荐Up to Next Major Version),点击 Add Package 完成
  4. 若使用命令行或跨平台工程,也可以直接在 Package.swift 中声明依赖:
    .package(url: "https://gitcode.com/gh_mirrors/ns/NSObject-Rx", from: "5.2.2")

小提示 💡

SwiftPM 方案中HasDisposeBag协议同样可用(该问题在 5.1.1 版本已修复),非 NSObject 类型也能享受自动销毁的便利。

三种安装方式终极对比:一张表看懂差异

对比维度CocoaPodsCarthageSwiftPM
上手难度⭐⭐⭐ 中等⭐⭐⭐⭐ 稍难⭐ 最简单
安装依赖需装 gem需装 Homebrew无需安装
集成方式自动生成 workspace手动链接 frameworkXcode 原生支持
适合人群老项目、团队统一规范追求项目结构干净新项目、个人开发者
排查难度报错时需清理缓存需检查构建脚本问题最少

一句话结论:新项目直接用 SwiftPM,省心省力;维护多年的老项目跟着团队现有习惯走,CocoaPods 或 Carthage 也完全够用 👍。

安装完成后的第一个示例:快速上手

无论用哪种方式安装,使用体验完全一致。看一个最简单的小例子:

import NSObject_Rx import RxSwift class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() Observable.just("Hello NSObject-Rx") .subscribe(onNext: { print($0) }) .disposed(by: rx.disposeBag) // 无需手动声明 disposeBag! } }

rx.disposeBag的行为与普通属性完全一致:当对象被释放(deinit)时,DisposeBag 会自动清空并取消所有订阅,有效避免内存泄漏。它的底层是通过 Objective-C 关联对象实现的,读写都做了线程安全处理,具体细节可以参考 NSObject+Rx.swift 源码。

常见问题 FAQ 🤔

Q1:安装后提示找不到模块怎么办?A:先确认是否在正确的 target 中添加了依赖,CocoaPods 用户检查use_frameworks!,Carthage 用户检查 Run Script 阶段是否配置正确。

Q2:我的类不继承 NSObject,还能用吗?A:可以!让你的类遵循HasDisposeBag协议即可,具体见 HasDisposeBag.swift 的定义,协议会自动提供一个默认的disposeBag

Q3:三种方式可以混用吗?A:不建议混用,同一个依赖重复集成会导致符号冲突。选择一个方案,一用到底最稳妥。

总结

NSObject-Rx 安装本身并不复杂,关键在于理解三种工具各自的适用场景。本文从环境要求、逐步骤安装、对比表格到常见问题,已经帮你把整个流程梳理得明明白白。还等什么?选一种方式,立刻把rx.disposeBag用起来,让你的 RxSwift 代码更加简洁优雅吧!🚀

【免费下载链接】NSObject-RxHandy RxSwift extensions on NSObject, including rx.disposeBag.项目地址: https://gitcode.com/gh_mirrors/ns/NSObject-Rx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 17:53:50

【单片机毕业设计】基于 STM32 的老人运动健康监护与跌倒报警系统设计 基于 STM32 的多传感器人体体征采集设备与 APP 联动开发(013304)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/21 17:53:16

告别Massive View Controller:从SpotifyRadar学习Coordinator导航架构

告别Massive View Controller:从SpotifyRadar学习Coordinator导航架构 【免费下载链接】SpotifyRadar Allows users to pull in new song releases from their favorite artists and provides users with important metrics like their top tracks, top artists, an…

作者头像 李华
网站建设 2026/8/21 17:52:37

CefFlashBrowser:免费开源Flash浏览器,5分钟重新打开你的老游戏

CefFlashBrowser:免费开源Flash浏览器,5分钟重新打开你的老游戏 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 把 .swf 文件拖进窗口的那一瞬间,熟悉的…

作者头像 李华
网站建设 2026/8/21 17:52:09

svelte-motion SVG 动画指南:用 isSVG 让路径与图形丝滑动起来

svelte-motion SVG 动画指南:用 isSVG 让路径与图形丝滑动起来 【免费下载链接】svelte-motion An animation library for Svelte based on framer-motion. 项目地址: https://gitcode.com/gh_mirrors/sv/svelte-motion SVG 动画一直是前端开发的痛点&#x…

作者头像 李华
网站建设 2026/8/21 17:47:53

Path of Building 新手完整指南:3 个里程碑跑通离线 Build 规划

Path of Building 新手完整指南:3 个里程碑跑通离线 Build 规划 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building(玩家圈里常简称…

作者头像 李华