一、各库功能分类与用途说明
我将这些库按照功能模块进行分类,并简要说明每个库的核心用途,方便你理解和使用:
1. 网络请求
- Alamofire:Swift 编写的网络请求库,是 iOS 开发中最主流的 HTTP 网络工具,封装了 URLSession,提供简洁易用的 API。
- Moya:基于 Alamofire 的更高层封装,采用面向协议的方式管理网络请求,让接口定义更清晰、可测试。
- Moya-ObjectMapper:Moya 与 ObjectMapper 的结合库,方便将网络请求返回的 JSON 数据直接解析为模型对象。
- Apollo:用于 GraphQL 网络请求的客户端库,适配 iOS 平台,处理 GraphQL 接口的请求、解析等逻辑。
2. 响应式编程
- RxSwift:Swift 版的响应式编程框架,核心是通过可观察序列(Observable)处理异步事件流。
- RxCocoa:RxSwift 针对 Cocoa/CocoaTouch 框架的扩展,适配 UIKit 控件(如按钮点击、输入框文本变化)的响应式处理。
- RxRelay:RxSwift 的扩展,提供可变的、无错误的 Observable(如 BehaviorRelay、PublishRelay)。
- RxBlocking:RxSwift 的测试工具,支持同步阻塞获取 Observable 的结果,方便单元测试。
- RxAtomic:RxSwift 底层的原子操作库,保障多线程下的数据安全。
- RxDataSources:基于 RxSwift 的数据源封装,简化 UITableView/UICollectionView 的数据绑定,支持差分更新。
- RxGesture:RxSwift 封装的手势识别库,支持以响应式方式处理手势事件。
- RxOptional:RxSwift 扩展,处理可选类型(Optional)的事件流,避免频繁解包。
- RxSwiftExt:RxSwift 的扩展工具库,提供更多实用的操作符和工具函数。
- RxTheme:基于 RxSwift 的主题切换库,支持响应式的界面主题配置。
- RxViewController:RxSwift 对 UIViewController 生命周期的封装,方便响应式处理页面生命周期事件。
- NSObject+Rx:为 NSObject 扩展 RxSwift 关联对象,方便管理 Rx 订阅的生命周期。
3. 数据解析 / 模型转换
- ObjectMapper:Swift 轻量级的 JSON 与模型互转库,通过映射规则实现数据解析。
- Differentiator:提供数据差分计算能力,常与 RxDataSources 配合,高效更新列表数据。
4. UI 组件 / 界面相关
- DGCharts:图表绘制库(原 Charts),支持折线图、柱状图、饼图等多种图表类型。
- DZNEmptyDataSet:为 UITableView/UICollectionView 提供空数据页面的封装,简化空状态展示。
- DropDown:轻量级的下拉菜单组件,支持自定义样式和交互。
- FloatingPanel:可悬浮的面板组件,支持拖拽、停靠等交互,常用于地图、播放器等场景。
- HMSegmentedControl:分段选择器组件,替代系统 UISegmentedControl,支持更多自定义样式。
- Hero:页面转场动画库,支持自定义、流畅的转场效果,简化页面切换动画开发。
- ImageSlideshow:图片轮播组件,支持自动播放、分页、图片加载等功能。
- InputBarAccessoryView:聊天输入框组件,适配表情、附件、语音等输入场景,常与 MessageKit 配合。
- MessageKit:聊天界面开发库,封装了聊天气泡、消息列表、输入框等核心组件,快速搭建聊天界面。
- MultiProgressView:多进度条组件,支持同时展示多个进度条,适用于多任务进度展示。
- RAMAnimatedTabBarController:带动画效果的 TabBar 组件,支持自定义 TabBarItem 的切换动画。
- SVProgressHUD:轻量级的加载提示框,替代系统 UIActivityIndicatorView,支持文字、加载动画等。
- Toast-Swift:轻量级的提示框组件,支持在屏幕底部 / 中间显示临时提示信息(Toast)。
- WhatsNewKit:展示 App 新版本功能的引导组件,方便向用户介绍新特性。
- IQKeyboardManagerSwift:自动处理键盘遮挡输入框的问题,无需手动调整视图布局,包含核心库(IQKeyboardCore)、通知扩展(IQKeyboardNotification)、输入视图通知(IQTextInputViewNotification)等子组件。
5. 工具类 / 辅助库
- BonMot:富文本处理库,简化 NSAttributedString 的创建和样式管理。
- DateToolsSwift:日期处理工具库,封装了日期计算、格式化、比较等常用功能。
- Highlightr:代码语法高亮库,支持多种编程语言的语法高亮展示。
- KafkaRefresh:下拉刷新 / 上拉加载组件,支持自定义刷新动画,适配 UITableView/UICollectionView。
- KeychainAccess:Keychain 钥匙串封装库,简化安全存储(如用户令牌、密码)的操作。
- Kingfisher:图片加载缓存库,支持网络图片下载、缓存、预处理等,替代 SDWebImage(Swift 版)。
- Localize-Swift:轻量级的国际化 / 本地化库,简化多语言适配开发。
- R.swift:资源管理工具,通过代码生成的方式管理图片、字符串、xib 等资源,避免硬编码,支持编译期检查。
- SnapKit:自动布局框架(Swift 版),替代 Masonry,以链式语法简化 AutoLayout 开发。
- SwiftDate:日期时间处理库,提供更便捷的日期解析、计算、格式化 API。
- SwifterSwift:Swift 扩展工具库,为系统类(如 String、UIView、Date 等)扩展大量实用方法,提升开发效率。
6. 日志 / 调试 / 异常处理
- CocoaLumberjack:iOS 主流的日志框架,支持多级别日志、多输出目标(控制台、文件、网络),性能优异。
- CwlCatchException:异常捕获库,包含核心捕获逻辑(CwlCatchException)、支持组件(CwlCatchExceptionSupport)、Mach 异常处理(CwlMachBadInstructionHandler)、POSIX 预条件测试(CwlPosixPreconditionTesting)、预条件测试核心(CwlPreconditionTesting),用于捕获和处理崩溃级异常。
- FLEX:调试工具库,支持在 App 内查看 / 修改 UI 层级、网络请求、沙盒文件、用户默认设置等,方便线上 / 测试环境调试。
- SwiftLint:Swift 代码规范检查工具,基于规则扫描代码,提示不规范写法,保障代码风格统一。
7. 统计 / 分析 / 广告
- Firebase 系列 :Google 提供的移动开发套件,包含:
- FirebaseAnalytics:用户行为统计分析;
- FirebaseCore/FirebaseCoreExtension/FirebaseCoreInternal:Firebase 核心组件;
- FirebaseCrashlytics:崩溃统计分析,捕获并上报 App 崩溃信息;
- FirebaseInstallations:设备安装信息管理;
- FirebaseRemoteConfigInterop:远程配置交互层;
- FirebaseSessions:会话数据收集。
- Mixpanel-swift:用户行为分析库,支持精细化的事件统计、用户分群等功能。
- Google-Mobile-Ads-SDK:Google 广告 SDK,支持集成谷歌广告(如横幅、插屏、原生广告)。
- GoogleAppMeasurement:Google 数据测量库,为 FirebaseAnalytics、Google 广告等提供数据统计能力。
- GoogleDataTransport:Google 数据传输库,负责将统计数据上报到 Google 服务器。
- GoogleUserMessagingPlatform:Google 用户消息平台,处理广告相关的用户授权、提示等。
- GoogleUtilities:Google 基础工具库,为 Firebase、Google 广告等提供底层支持。
8. 测试相关
- Quick:Swift 编写的行为驱动开发(BDD)测试框架,类似 Ruby 的 RSpec,简化测试用例编写。
- Nimble :与 Quick 配合的断言库,提供更自然、易读的断言语法(如
expect(xxx).to(equal(yyy)))。
9. 其他底层 / 依赖库
- PromisesObjC/PromisesSwift:苹果官方的 Promise 库,支持 Objective-C/Swift,简化异步任务链式调用。
- nanopb:轻量级的 Protocol Buffers(Protobuf)解析库,适用于嵌入式 / 移动端,占用资源少。
- AcknowList:开源库致谢列表生成工具,自动收集项目中使用的开源库信息,生成致谢页面。
小结
- 这份列表覆盖了 iOS 开发的核心场景:网络请求、响应式编程、UI 组件、数据处理、调试测试、统计分析等,是典型的中大型 iOS 项目常用依赖。
- 响应式编程(RxSwift 生态)、网络(Alamofire/Moya)、UI 组件(DGCharts/MessageKit 等)、工具类(SnapKit/Kingfisher 等)是其中的核心模块,也是 iOS 开发的高频使用库。
- Firebase 系列和 Google 广告 SDK 主要用于商业化项目的统计、崩溃监控和广告集成,而 FLEX/CocoaLumberjack 则是调试和日志的核心工具。
二、网络请求类
1. Alamofire
-
核心用途:Swift 首选 HTTP 网络库,封装 URLSession,支持请求 / 响应拦截、参数编码、进度监听、证书验证等。
-
最新稳定版:5.10.0(兼容 Swift 5.9+,iOS 13.0+)
-
核心使用方法 :
swift
import Alamofire // 基础 GET 请求 AF.request("https://api.example.com/data", method: .get) .validate() // 验证 HTTP 状态码(200-299) .responseJSON { response in switch response.result { case .success(let value): print("请求成功:\(value)") case .failure(let error): print("请求失败:\(error)") } } // POST 请求(带参数) let parameters: [String: Any] = ["name": "iOSDev", "age": 30] AF.request("https://api.example.com/post", method: .post, parameters: parameters) .responseData { response in if let data = response.data { print("响应数据:\(String(data: data, encoding: .utf8)!)") } }
2. Moya
-
核心用途:Alamofire 上层封装,以「面向协议」方式管理接口,解耦请求逻辑,简化测试和维护。
-
最新稳定版:15.0.0(兼容 Swift 5.9+,iOS 13.0+)
-
核心使用方法 :
swift
import Moya // 1. 定义接口枚举 enum APIService { case getUser(id: Int) case updateUser(name: String) } // 2. 实现 TargetType 协议 extension APIService: TargetType { var baseURL: URL { URL(string: "https://api.example.com")! } var path: String { switch self { case .getUser(let id): return "/users/\(id)" case .updateUser: return "/users/update" } } var method: Moya.Method { switch self { case .getUser: return .get case .updateUser: return .post } } var task: Task { switch self { case .getUser: return .requestPlain case .updateUser(let name): return .requestParameters(parameters: ["name": name], encoding: JSONEncoding.default) } } var headers: [String: String]? { ["Content-Type": "application/json"] } } // 3. 发起请求 let provider = MoyaProvider<APIService>() provider.request(.getUser(id: 1)) { result in switch result { case .success(let response): let data = response.data // 响应数据 case .failure(let error): print("请求失败:\(error)") } }
3. Moya-ObjectMapper
-
核心用途:Moya 与 ObjectMapper 联动,直接将响应数据解析为 Swift 模型。
-
最新稳定版:9.0.0(兼容 Moya 15.x,ObjectMapper 4.x)
-
核心使用方法 :
swift
// 1. 定义模型(遵守 Mappable) struct User: Mappable { var id: Int? var name: String? init?(map: Map) {} mutating func mapping(map: Map) { id <- map["id"] name <- map["name"] } } // 2. 解析请求结果 provider.request(.getUser(id: 1)) { result in if let response = try? result.get() { let user = try? response.map(User.self) // 直接解析为模型 print("用户名:\(user?.name ?? "未知")") } }
4. Apollo
-
核心用途:GraphQL 客户端库,支持请求缓存、批量请求、订阅(Subscription)、类型安全的 GraphQL 操作。
-
最新稳定版:1.11.0(兼容 Swift 5.9+,iOS 13.0+)
-
核心使用方法 (需先通过 CLI 生成模型):
swift
import Apollo // 1. 创建客户端 let client = ApolloClient(url: URL(string: "https://api.example.com/graphql")!) // 2. 定义 GraphQL 查询(生成的模型) let query = GetUserQuery(id: 1) // 3. 发起查询 client.fetch(query: query) { result in switch result { case .success(let data): let userName = data.data?.user?.name print("用户名:\(userName ?? "未知")") case .failure(let error): print("查询失败:\(error)") } }
三、响应式编程(RxSwift 生态)
1. RxSwift & RxCocoa
-
核心用途 :
- RxSwift:实现响应式编程核心(Observable/Observer/ 操作符),处理异步事件流;
- RxCocoa:适配 UIKit/AppKit,将 UI 事件(点击、输入、滚动)转为 Observable。
-
最新稳定版:6.7.0(兼容 Swift 5.9+,iOS 13.0+)
-
核心使用方法 :
swift
import RxSwift import RxCocoa let disposeBag = DisposeBag() // 管理订阅生命周期 // 1. 按钮点击响应式 let button = UIButton() button.rx.tap .subscribe(onNext: { print("按钮被点击") }) .disposed(by: disposeBag) // 2. 输入框文本实时监听 let textField = UITextField() textField.rx.text .orEmpty // 转为非可选 String .debounce(.milliseconds(300), scheduler: MainScheduler.instance) // 防抖 .subscribe(onNext: { text in print("输入框内容:\(text)") }) .disposed(by: disposeBag) // 3. 网络请求 + Rx 封装 let apiProvider = MoyaProvider<APIService>() apiProvider.rx.request(.getUser(id: 1)) .map(User.self) // 解析为模型 .subscribe(onNext: { user in print("用户ID:\(user.id ?? 0)") }, onError: { error in print("请求失败:\(error)") }) .disposed(by: disposeBag)
2. RxDataSources
-
核心用途:简化 UITableView/CollectionView 与 RxSwift 的绑定,支持差分更新(只刷新变化的单元格)。
-
最新稳定版:5.0.0(兼容 RxSwift 6.x,iOS 13.0+)
-
核心使用方法 :
swift
import RxDataSources // 1. 定义数据源模型 struct SectionModel { var header: String var items: [String] } // 2. 遵守 SectionModelType 协议 extension SectionModel: SectionModelType { typealias Item = String init(original: SectionModel, items: [String]) { self = original self.items = items } } // 3. 绑定到 UITableView let tableView = UITableView() let dataSource = RxTableViewSectionedReloadDataSource<SectionModel>( configureCell: { ds, tv, ip, item in let cell = tv.dequeueReusableCell(withIdentifier: "cell", for: ip) cell.textLabel?.text = item return cell }, titleForHeaderInSection: { ds, section in return ds[section].header } ) // 4. 数据源绑定 let sections = [SectionModel(header: "分组1", items: ["A", "B"]), SectionModel(header: "分组2", items: ["C", "D"])] Observable.just(sections) .bind(to: tableView.rx.items(dataSource: dataSource)) .disposed(by: disposeBag)
3. 其他 Rx 扩展库
表格
| 库名 | 最新版本 | 核心用途 |
|---|---|---|
| RxRelay | 6.7.0 | 无错误的 Observable(BehaviorRelay/PublishRelay),替代 Variable/Subject |
| RxGesture | 4.0.0 | 手势响应式封装(点击 / 长按 / 拖拽等) |
| RxOptional | 4.0.0 | 处理 Optional 事件流(如 filterNil() 自动过滤 nil) |
| RxSwiftExt | 6.2.0 | 扩展操作符(如 retry(with:)、unwrap()) |
四、UI 组件类
1. SnapKit(自动布局)
-
核心用途:Swift 版自动布局框架,链式语法替代 NSLayoutConstraint,简洁高效。
-
最新稳定版:5.6.0(兼容 iOS 11.0+)
-
核心使用方法 :
swift
import SnapKit let view = UIView() view.backgroundColor = .red self.view.addSubview(view) // 约束:距离父视图上下左右各 20pt view.snp.makeConstraints { make in make.edges.equalToSuperview().inset(20) } // 约束:宽 100,高 50,居中 view.snp.makeConstraints { make in make.width.equalTo(100) make.height.equalTo(50) make.center.equalToSuperview() }
2. Kingfisher(图片加载)
-
核心用途:Swift 图片加载 / 缓存库,支持网络图片、本地图片、GIF、渐进式加载、缓存策略自定义。
-
最新稳定版:7.10.0(兼容 iOS 14.0+)
-
核心使用方法 :
swift
import Kingfisher let imageView = UIImageView() // 基础加载 imageView.kf.setImage(with: URL(string: "https://example.com/image.jpg")) // 带占位图 + 加载完成回调 imageView.kf.setImage( with: URL(string: "https://example.com/image.jpg"), placeholder: UIImage(named: "placeholder"), completionHandler: { result in switch result { case .success(let value): print("加载成功:\(value.image)") case .failure(let error): print("加载失败:\(error)") } } ) // 清除缓存 KingfisherManager.shared.cache.clearMemoryCache() // 内存缓存 KingfisherManager.shared.cache.clearDiskCache() // 磁盘缓存
3. DGCharts(图表)
-
核心用途:绘制折线图 / 柱状图 / 饼图 / 雷达图等,高度自定义样式(颜色、动画、标注)。
-
最新稳定版:5.0.0(兼容 iOS 13.0+)
-
核心使用方法 (折线图示例):
swift
import DGCharts let chartView = LineChartView() self.view.addSubview(chartView) chartView.snp.makeConstraints { make in make.edges.equalToSuperview().inset(20) } // 准备数据 var entries = [ChartDataEntry]() entries.append(ChartDataEntry(x: 0, y: 10)) entries.append(ChartDataEntry(x: 1, y: 20)) entries.append(ChartDataEntry(x: 2, y: 15)) // 设置数据集 let dataSet = LineChartDataSet(entries: entries, label: "销量") dataSet.colors = [.red] // 折线颜色 dataSet.circleColors = [.blue] // 节点颜色 let data = LineChartData(dataSet: dataSet) chartView.data = data // 样式配置 chartView.legend.enabled = false // 隐藏图例 chartView.xAxis.labelPosition = .bottom // X 轴标签在底部
4. MessageKit + InputBarAccessoryView(聊天界面)
-
核心用途:快速搭建聊天界面,MessageKit 负责消息列表 / 气泡,InputBarAccessoryView 负责输入框。
-
最新稳定版 :
- MessageKit:4.1.0(iOS 14.0+)
- InputBarAccessoryView:6.0.0
-
核心使用方法 (简化版):
swift
import MessageKit import InputBarAccessoryView class ChatVC: MessagesViewController { let messages: [MessageType] = [] // 消息数据 let currentUser = Sender(senderId: "1", displayName: "我") override func viewDidLoad() { super.viewDidLoad() messagesCollectionView.messagesDataSource = self messagesCollectionView.messagesLayoutDelegate = self messagesCollectionView.messagesDisplayDelegate = self messageInputBar.delegate = self } } // 实现数据源协议 extension ChatVC: MessagesDataSource { func currentSender() -> SenderType { currentUser } func messageForItem(at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> MessageType { return messages[indexPath.section] } func numberOfSections(in messagesCollectionView: MessagesCollectionView) -> Int { return messages.count } } // 实现布局/显示协议(略) extension ChatVC: MessagesLayoutDelegate, MessagesDisplayDelegate {} extension ChatVC: InputBarAccessoryViewDelegate { // 发送按钮点击 func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith text: String) { let message = Message(sender: currentUser, messageId: UUID().uuidString, sentDate: Date(), kind: .text(text)) messages.append(message) messagesCollectionView.reloadData() inputBar.inputTextView.text = "" } }
5. 其他常用 UI 库
表格
| 库名 | 最新版本 | 核心用途 |
|---|---|---|
| SVProgressHUD | 2.2.5 | 轻量级加载提示框(SVProgressHUD.show()/SVProgressHUD.dismiss()) |
| Toast-Swift | 5.0.1 | 底部提示框(view.makeToast("提示内容")) |
| DZNEmptyDataSet | 1.8.1 | 列表空数据页面(实现 EmptyDataSetSource/Delegate) |
| FloatingPanel | 4.5.0 | 可拖拽悬浮面板(如地图底部弹窗) |
| Hero | 1.7.0 | 页面转场动画(hero.isEnabled = true + hero.id = "tag") |
五、工具类
1. ObjectMapper(JSON 解析)
-
核心用途:JSON 与 Swift 模型互转,支持嵌套模型、自定义映射规则。
-
最新稳定版:4.2.0(Swift 5.9+)
-
核心使用方法 :
swift
import ObjectMapper struct User: Mappable { var id: Int? var name: String? var address: Address? // 嵌套模型 init?(map: Map) {} mutating func mapping(map: Map) { id <- map["id"] name <- map["name"] address <- map["address"] // 自动解析嵌套模型 } } struct Address: Mappable { var city: String? init?(map: Map) {} mutating func mapping(map: Map) { city <- map["city"] } } // JSON 转模型 let jsonString = """ {"id": 1, "name": "iOSDev", "address": {"city": "Beijing"}} """ if let user = User(JSONString: jsonString) { print(user.name ?? "", user.address?.city ?? "") // 输出:iOSDev Beijing } // 模型转 JSON let user = User() user.id = 2 user.name = "SwiftDev" print(user.toJSONString()!) // 输出:{"id":2,"name":"SwiftDev"}
2. SwiftLint(代码规范)
- 核心用途:强制 Swift 代码规范(基于 GitHub 官方规范),检测未使用变量、强制换行、命名规范等。
- 最新稳定版:0.56.0(兼容 Swift 5.9+)
- 核心使用方法 :
-
安装:
brew install swiftlint -
配置(项目根目录创建
.swiftlint.yml):yaml
disabled_rules: # 禁用的规则 - line_length opt_in_rules: # 启用的可选规则 - empty_count included: # 检测的目录 - Sources excluded: # 排除的目录 - Sources/ThirdParty -
集成到 Xcode(Build Phases 添加脚本): bash
运行
if which swiftlint >/dev/null; then swiftlint else echo "SwiftLint not installed, download from https://github.com/realm/SwiftLint" fi
-
3. KeychainAccess(安全存储)
-
核心用途:封装 Keychain 操作,安全存储令牌 / 密码(比 UserDefaults 更安全)。
-
最新稳定版:4.2.2(iOS 11.0+)
-
核心使用方法 :
swift
import KeychainAccess let keychain = Keychain(service: "com.example.app") // 存储 keychain["token"] = "abc123456" // 读取 let token = keychain["token"] // 删除 keychain["token"] = nil // 带访问控制(仅当前设备可用) let secureKeychain = Keychain(service: "com.example.app") .accessibility(.whenUnlocked, authenticationPolicy: .userPresence) secureKeychain["password"] = "123456"
六、测试类
1. Quick + Nimble
-
核心用途 :
- Quick:BDD 测试框架(类似 RSpec),用
describe/it/beforeEach组织测试用例; - Nimble:断言库,替代 XCTest 原生断言,语法更自然。
- Quick:BDD 测试框架(类似 RSpec),用
-
最新稳定版 :
- Quick:7.0.0(Swift 5.9+)
- Nimble:11.0.0
-
核心使用方法 :
swift
import Quick import Nimble @testable import YourApp class UserTests: QuickSpec { override func spec() { describe("User 模型") { var user: User! beforeEach { user = User(id: 1, name: "Test") } it("初始化后 ID 不为空") { expect(user.id).to(equal(1)) // Nimble 断言 } it("名称不为空") { expect(user.name).toNot(beEmpty()) } } } }
七、统计 / 崩溃监控类(Firebase 系列)
1. FirebaseCrashlytics
- 核心用途:捕获 App 崩溃日志,定位崩溃原因(堆栈、设备信息、用户行为)。
- 最新稳定版:10.24.0(iOS 12.0+)
- 核心使用方法 :
-
集成:通过 CocoaPods 添加
pod 'Firebase/Crashlytics' -
初始化(AppDelegate): swift
import Firebase FirebaseApp.configure() -
主动上报异常: swift
import FirebaseCrashlytics // 上报自定义异常 do { try someRiskyOperation() } catch { Crashlytics.crashlytics().record(error: error) } // 上报自定义日志 Crashlytics.crashlytics().log("用户点击了支付按钮") // 设置用户ID(便于定位问题) Crashlytics.crashlytics().setUserID("123456")
-
2. FirebaseAnalytics
-
核心用途:统计用户行为(页面访问、按钮点击、事件触发),支持自定义事件 / 参数。
-
最新稳定版:10.24.0
-
核心使用方法 :
swift
import FirebaseAnalytics // 统计自定义事件 Analytics.logEvent("button_click", parameters: [ "button_name": "pay", "page": "order" ]) // 设置用户属性 Analytics.setUserProperty("iOS", forName: "platform")
总结
- 核心选型优先级:网络(Alamofire/Moya)> 响应式(RxSwift/RxCocoa)> UI 基础(SnapKit/Kingfisher)> 工具类(ObjectMapper/KeychainAccess)> 测试(Quick/Nimble),是中大型 iOS 项目的标配组合。
- 版本兼容注意:所有库优先选择兼容 Swift 5.9+、iOS 13.0+ 的版本(覆盖 95% 以上设备),避免使用过旧版本导致兼容性问题。
- 使用建议 :
- 网络层:Moya + RxSwift 组合可大幅提升接口维护性;
- UI 层:SnapKit + Kingfisher 是基础,复杂 UI 组件优先选维护活跃的库(如 DGCharts/FloatingPanel);
- 调试 / 监控:FLEX(开发环境)+ FirebaseCrashlytics(生产环境)组合,覆盖全流程问题定位。