当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/4139400.html

相关文章:

  • 【单片机毕业设计】基于 STM32 的老人运动健康监护与跌倒报警系统设计 基于 STM32 的多传感器人体体征采集设备与 APP 联动开发(013304)
  • 告别Massive View Controller:从SpotifyRadar学习Coordinator导航架构
  • 一套键鼠控制多台电脑:Barrier 跨平台 KVM 软件安装、配置与排障全攻略
  • CefFlashBrowser:免费开源Flash浏览器,5分钟重新打开你的老游戏
  • svelte-motion SVG 动画指南:用 isSVG 让路径与图形丝滑动起来
  • Path of Building 新手完整指南:3 个里程碑跑通离线 Build 规划
  • Faiss 向量检索实战:用 RaBitQ 一招让千万级索引内存省 75%、查询提速 10 倍
  • Godot多网格实例可视化编排指南:不写数组、不手摆五百次,用子节点摆满整张地图
  • GithubTrends 源码解析:从 GitHub Trending 数据到 UI 展示的完整架构拆解
  • 网页视频下载太麻烦?猫抓这款浏览器资源嗅探工具帮你一键搞定
  • pyOCD 调试实战:5 个真实场景带你打通 Arm Cortex-M 开发全流程
  • B站视频下载工具downkyi因律师函永久关停:完整案例拆解与行动清单
  • 给智能体装上“眼睛“只要 3 步:Qwen-MM-Plugins 多模态插件上手实录
  • HsMod:免费开源的炉石传说增强插件,8 倍速开包、皮肤修改与 50+ 功能上手指南
  • 30秒解锁NCM加密音乐:ncmdump免费转换完整教程
  • 免费好用的 Mac 光标管理器:3 步上手 Mousecape,轻松打造个性化鼠标指针
  • WebTorrent.IO:零安装,在浏览器里播放BT种子
  • BMW-YOLOv4-Training-Automation 四大监控方式全解析:REST API、TensorBoard、Web UI、Dashboard 一个都不能少
  • React Native SegmentedControl 架构解析:从 Lean Core 提取到三端统一的组件设计
  • npx命令终极指南:8个实战技巧让npm包执行一步到位
  • parsec-vdd 怎么给无头主机加虚拟显示器:完整上手指南
  • Steeltoe Samples 云部署指南:Cloud Foundry 与 Kubernetes 双平台实战教程
  • 从零搭建DNF私服:基于Docker容器化的一键部署实战指南
  • 视频生成模型太大跑不动?LTX-2.3 10Eros v1.2 MLX-q8 让 16GB 内存 Mac 也能本地出片
  • 轻松打破语言壁垒:RPCS3模拟器中文汉化完整指南
  • 9款AI写论文哪个好?2026实测:只有它敢给你真文献+真图表
  • 10分钟给平衡车换上FOC固件:从主板解锁到参数调优的完整保姆级指南
  • 4 步搭好 PotPlayer 字幕翻译插件,外挂字幕实时双语同屏
  • rust-ctrlc 完全教程:如何用 10 行代码处理 Ctrl-C 信号
  • AI 视频放大入门指南:用 Video2X 免费把老片修成 4K 高清