分享近期 GitHub 上比较流行的 22 个和 iOS 开发相关的开源项目。
包括开发辅助工具,异步编程库,JSON 解析,移动端数据库,图像视频处理,网络请求,UI 框架、组件,算法、数据结构等内容。
- Accio 使用 Swift 编写的 iOS/tvOS/watchOS/macOS 依赖管理工具。
在当前 iOS 生态环境中,CocoaPods 和 Carthage 是最成熟的依赖管理器。
如果你不喜欢使用 Ruby 编写的 CocoaPods,或者更偏爱 Carthage 的非侵入方式,可以尝试下 Accio. Accio 改进了 Carthage 的一些问题,同时它的核心尽可能使用 SwiftPM,这样未来 Xcode 对 SwiftPM 支持更成熟时,可以很方便地迁移到 SwiftPM。顺便提一下,Accio 读作 AH-kee-oh.
- SwiftLint 检查 Swift 代码风格、惯例。基于 Clang 和 SourceKit 提供的 AST 表示,因此可以提供更精准的分析结果。
- idb 顾名思义,iOS 版本的
adb
。这款 Facebook 开发的命令行工具可助你自动化在模拟器和真机上的调试流程。 - InAppViewDebugger 供内嵌于应用的视图调试器。类似 Xcode 视图调试器,但可以在 iPad 和 iPhone 上调试视图。
- MTHawkeye 美图秀秀开源的 iOS 调试优化辅助工具集。内置插件有 LivingObjectSniffer (跟踪对象)、Allocations(跟踪实时分配内存)、UITimeProfiler(主线程耗时任务调优)、ANRTrace(捕获卡顿事件)、FPSTrace(跟踪界面 FPS 及 OpenGL 刷新绘制 FPS)、CPUTrace(跟踪 CPU 持续高使用率)、NetworkMonitor(监听记录应用内 HTTP(S) 网络请求各阶段耗时)、NetworkInspect(基于 Network Monitor 推荐可优化项,支持自定义规则)、OpengGLTrace(跟踪 OpenGL 资源内存占用)、DirectoryWatcher(跟踪沙盒文件夹大小)、FLEX(沙盒文件 AirDrop)。开发者可基于基础框架 API 开发自己的调试辅助插件。
- RxSwift 在 Swift 中使用 Reactive 编程范式。
- PromiseKit 给 Swift 和 Objective-C 带来了 Promise 异步编程模式。
- IkigaJSON 用 Swift 编写的高性能 JSON 解析库。
- Realm 移动端数据库,Core Data & SQLite 替代品。提供直观的对象接口,无需 ORM。在提供众多丰富特性的情况下,常用操作仍有超越原生 SQLite 的性能。支持 iOS、macOS、tvOS、watchOS。同时提供 Objective-C 和 Swift 版本。
- BBMetalImage 使用 Swift 编写的高性能图像视频处理库,基于 GPU 加速。内置超过 60 种过滤器,支持链式调用,支持自定义过滤器。
- Alamofire 使用 Swift 编写的 HTTP 网络库,支持 iOS、macOS、tvOS、watchOS。特性包括链式调用,URL、JSON、plist 参数编码,上传文件、数据,下载文件(支持续传),URLCredential 认证,HTTP 响应校验,上传、下载进度,curl 命令输出,动态适配、重试请求等。
- SDWebImage 高性能异步图像下载,特性包括缓存(自动处理缓存过期)、后台图像解压缩、定制图像转换、定制图像加载器等。在 UIImage 支持的格式(JPEG、PNG、GIF 等)之外,还支持 WebP 格式(包括 WebP 动画)。并可通过插件支持更多图像格式,例如 APNG、BPG、HFIF、SVG。
- IGListKit UICollectionView 框架,创建高速、灵活的列表。提供可复用的单元格、组件和易于扩展的 API,支持多种数据类型。diff 算法解耦,可定制 diff 行为。使用 Objective-C 编写,同时提供完整的 Swift 互操作支持。
- Charts iOS/tvOS/macOS 图表绘制库。在 Android 开发者间很流行的图表绘制库 MPAndroidChart 的 Swift 移植版。
- SnapKit iOS 和 macOS 自动布局 DSL。
- Blueprint Square 最近开源的声明式 iOS UI 框架。使用 Swift 编写。该框架尚处于试验阶段,但已应用于 Square 生产环境应用。
- QMUI 腾讯开源的 iOS UI 解决方案。
- IQKeyboardManager 自动防止弹出键盘遮盖
UITextField/UITextView
。 - TORoundedButton 基于
UIControl
类实现的圆角矩形按钮控件。在提供众多定制样式的选项的同时仍保持尽可能高的图形性能。使用 Objective-C 编写,不过完全兼容 Swift(Swift 下的类名为RoundedButton
)。 - Swift Algorithm Club 算法和数据结构,除了 Swift 代码,还配有详尽的解释!
- LeetCode by Swift LeetCode 问题的 Swift 解答。
- Open-Source iOS Apps 开源 iOS 应用列表,可供观摩借鉴。