这里每天分享一个 iOS 的新知识,快来关注我吧
写在前面
又到了周更时间,这周翻 GitHub 又翻出不少好东西,赶紧整理一下分享出来。说真的,最近沉迷淘项目,一刷就是俩小时哈哈。
行了,废话不多说,开整。
库篇
GRDB.swift —— Swift 操作 SQLite 的最优解
GitHub:groue/GRDB.swift[1]
不夸张地讲,GRDB 是我目前用过最舒服的 Swift SQLite 库。FMDB 用过、Core Data 折腾过、Realm 也试了一阵,最后还是回到了 GRDB。API 写得相当 Swifty,类型安全做得到位,性能也猛——之前一个项目导入十几万条数据,GRDB 几乎没让我等。
最香的是它的数据库观察机制,数据一变 UI 自动跟着刷,跟 Combine、SwiftUI 配合那叫一个丝滑:
struct Player: Codable, FetchableRecord, PersistableRecord {
var id: Int64
var name: String
var score: Int
}
// 观察数据库变化
let observation = ValueObservation.tracking { db in
try Player.order(Column("score").desc).fetchAll(db)
}
// 配合 SwiftUI 使用
let cancellable = observation.start(in: dbQueue) { error in
// 处理错误
} onChange: { players in
// 数据变化自动回调
print("玩家列表更新:\(players.count)")
}
适用场景:要做本地持久化的 Swift 项目,尤其那种对性能、响应式有要求的。
目前 7.4k+ Star,更新挺勤,文档也写得细,不管你是新手还是老鸟,都建议试试。
SDWebImageWebPCoder —— WebP 加载就靠它
GitHub:SDWebImage/SDWebImageWebPCoder[2]
用过 SDWebImage 的都懂,这玩意儿基本是后端走 WebP 时的标配。现在不少公司为了省带宽,图片一律 WebP,体积能砍掉差不多 30%,但 iOS 原生对 WebP 的支持……怎么说呢,不太行,所以这个插件就特别有用了。
接入也简单,几行的事:
import SDWebImageWebPCoder
// 在 AppDelegate 里注册一下
let webPCoder = SDImageWebPCoder.shared
SDImageCodersManager.shared.addCoder(webPCoder)
// 然后正常使用就行
imageView.sd_setImage(with: URL(string: "https://example.com/image.webp"))
适用场景:后端图片是 WebP 的项目,或者想给图片加载瘦身的 App。
SDWebImageSVGCoder —— SVG 福音
GitHub:SDWebImage/SDWebImageSVGCoder[3]
跟上面那个是一家人,专治 SVG 加载。SVG 在 iOS 上一直挺尴尬的,原生支持半残不残,第三方方案乱七八糟,这个插件直接调 Apple 自家的 CoreSVG,性能、兼容性都过关。
import SDWebImageSVGCoder
// 注册 SVG 解码器
let SVGCoder = SDImageSVGCoder.shared
SDImageCodersManager.shared.addCoder(SVGCoder)
// 加载 SVG 图标
imageView.sd_setImage(with: URL(string: "https://example.com/icon.svg"),
placeholderImage: nil,
context: [.imageThumbnailPixelSize: CGSize(width: 100, height: 100)])
适用场景:要展示矢量图标、Logo 的项目,特别是图标量大、要适配各种分辨率的那种。
SocketRocket —— 老牌 WebSocket 客户端
GitHub:facebookincubator/SocketRocket[4]
Facebook 出品的 Objective-C WebSocket 客户端。虽说现在 Apple 自己有了 URLSessionWebSocketTask,但很多老项目里 SocketRocket 还顶在第一线。稳定性是真的没话说,毕竟扛过这么多年的生产环境,兼容性也比新 API 强(iOS 13 以下照样跑)。
[NSURL URLWithString:@"wss://echo.websocket.org"]];
webSocket.delegate = self;
[webSocket open];
// 实现代理方法
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message {
NSLog(@"收到消息:%@", message);
}
适用场景:要兼容低版本系统的、维护老项目的,IM、推送、直播弹幕都能用。
9.6k+ Star,老牌项目了,更新不算频繁,但稳得很。
TrustKit —— SSL Pinning 一把梭
GitHub:datatheorem/TrustKit[5]
讲到 App 安全,SSL Pinning 基本是金融、支付类 App 的标配。我之前自己手撸过一版 Pinning 逻辑,踩坑踩到怀疑人生……后来换了 TrustKit,配置一下 Info.plist 就完事,连代码都不用写,舒服。
kTSKSwizzleNetworkDelegates: false,
kTSKPinnedDomains: [
"yourdomain.com": [
kTSKPublicKeyHashes: [
"公钥哈希1",
"公钥哈希2" // 备用 Pin
]
]
]
] as [String : Any]
TrustKit.initSharedInstance(withConfiguration: trustKitConfig)
适用场景:对网络安全有要求的 App,银行、电商、企业级的基本都得上。
2.7k+ Star,文档清楚,配置无脑,强烈安利。
microsoft-authentication-library-common-for-objc —— 微软官方认证库
GitHub:AzureAD/microsoft-authentication-library-common-for-objc[6]
这个是微软官方的 ADAL/MSAL 公共代码库,主要服务于 Azure AD、Microsoft 365 这种企业级账号体系。做 To B 业务、要对接微软那一套生态的话,这个库基本绕不开。
普通开发者一般用不到它,更多是通过 MSAL 间接调用。但要是你想做点深度定制,比如改 Token 缓存策略、搞 SSO 共享,那就得直接动它了。
适用场景:企业级 App、对接 Office 365、Azure AD、Outlook 那一票微软服务的项目。
100+ Star,比较小众,不过在 To B 圈口碑挺好。
工具篇
Whisky —— 在 Mac 上跑 Windows 游戏
GitHub:Whisky-App/Whisky[7]
这个我必须吹一波,SwiftUI 写的 Wine 包装器,让 Mac 跑 Windows 游戏变得贼简单。以前要么花钱买 CrossOver,要么自己折腾 Wine 命令行,劝退一大片。Whisky 直接图形化点点点搞定,体验也很 Mac。

底层用的是 Apple 自家的 Game Porting Toolkit,DirectX 11/12 兼容性还行,《赛博朋克 2077》《艾尔登法环》这种我都跑起来过,虽然帧率不能跟原生比,但能玩。
适用场景:Mac 用户偶尔想搓两把 Steam 上的 Windows 游戏,或者跑点 Windows 小工具。
14k+ Star,可惜已经不更新了。
LiveContainer —— 不装也能跑 iOS App
GitHub:LiveContainer/LiveContainer[8]
光看名字就知道这是个狠活——LiveContainer 能让你不真正"安装"IPA,就把 App 跑起来。原理类似容器化,把运行环境隔离开。对开发者测多版本 App、或者证书名额不够用的同学来说,简直是救星。
它解决了一个老大难:免费证书一次只能装 3 个 App,有了 LiveContainer,一个"容器 App"里能跑 N 个应用,相当于变相扩容。
适用场景:开发者测试、沙盒研究、免签证书不够用。
6k+ Star,技术含量挺高,源码值得啃。
CopilotForXcode —— Xcode 终于有 Copilot 了
GitHub:github/CopilotForXcode[9]
终于!GitHub 官方亲自下场做 Xcode 版 Copilot 了! 以前看 VSCode 用户用 Copilot 写得飞起,咱们 Xcode 这边只能干瞪眼,那叫一个酸。现在好了,体验直接拉满。

补全、聊天、解释代码、生成测试,能想到的 AI 编程功能基本都有。我自己用下来,写 SwiftUI 的时候提升最明显,写一半剩下的它就猜出来了,效率至少快了三成。
# 或者 brew install --cask github-copilot-for-xcode
适用场景:所有 iOS/Mac 开发者,写代码效率起飞。
Swiftfin —— 最好用的 Jellyfin 客户端
GitHub:jellyfin/Swiftfin[10]
家里有 Jellyfin 媒体服务器的朋友(追剧党狂喜),Swiftfin 大概率是你能在 iOS/tvOS 上找到的最好的客户端。纯 SwiftUI 写的,UI 干净,操作流畅,比官方 Web 端好用一万倍。
iPhone、iPad、Apple TV 都支持,画质切换、字幕、章节跳转该有的都有,4K 大文件播放也稳。
适用场景:NAS 党、Jellyfin 玩家、想从 Infuse 出坑的同学。
4k+ Star,开源免费,顺便还能拿来当 SwiftUI 项目结构的学习样本。
TrollStore —— 越狱圈的扛把子
GitHub:opa334/TrollStore[11]
压轴的来了,TrollStore,越狱圈无人不知。利用 iOS 系统漏洞,可以永久安装任意 IPA,不用 7 天一签,不用开发者账号,装上就一直能用,舒服得不行。
支持的 iOS 版本主要是 14.0 ~ 16.6.1(具体看设备),新系统漏洞修了就没法用了。能装的应用相当猛,不少需要特殊权限的工具类 App 都能跑起来。
适用场景:玩机党、研究 iOS 系统的、想跑各种第三方 App 的。
21k+ Star,热度炸裂。
最后
这些库和工具你用过几个?踩过什么坑、有啥小技巧?评论区聊聊呗!
参考资料
这里每天分享一个 iOS 的新知识,快来关注我吧
夜雨聆风