iOS Performance 是 jordancoin/ios-skills-collection 技能集合中的一项,主题为 iOS 应用性能优化。根据资料,它提供了一份构建高性能 iOS 应用的综合性指南,围绕内存管理、性能剖析和优化技术展开。
用途 该技能面向需要提升 iOS 应用性能的开发者,帮助识别并解决内存泄漏、主线程阻塞、滚动卡顿、启动缓慢、网络与数据层效率低下等常见性能问题。
主要能力
- 内存管理:讲解 ARC(自动引用计数)下 strong、weak、unowned 三种引用类型的区别与适用场景,并给出选择建议表(strong 用于对象应保持存活、风险是循环引用;weak 用于可选引用、可能变为 nil;unowned 用于非可选、生命周期相同或更长、错误使用会崩溃)。
- 循环引用检测:列出常见循环引用模式,包括闭包强捕获 self、代理(delegate)强引用、Timer 强引用 target,并给出修复方式([weak self]、weak delegate 需协议继承 AnyObject、使用闭包式 Timer 并在 deinit 中 invalidate)。
- 内存泄漏排查:建议在 ViewController 中添加 deinit 打印以验证释放,并列出常见泄漏来源:未使用 [weak self] 的闭包、未标记 weak 的代理、未移除的 NotificationCenter 观察者、未失效的 Timer、未取消的 DispatchWorkItem、单例中的强引用。
- 性能剖析:介绍 Instruments 的使用,包括 Time Profiler(关注超过 16ms 的函数、主线程阻塞、CPU 占用)、Allocations(内存增长、临时分配、大块分配)、Leaks(内存泄漏检测),并给出对应的 xcrun xctrace 命令。同时介绍代码内计时函数与 os_signpost 标记。
- UIKit 优化:UITableView/UICollectionView 的 Cell 复用注册、自动行高与估算行高、预取(prefetchDataSource)与取消预取;Cell 优化(图层光栅化、不透明视图、prepareForReuse 中取消图片加载);图片优化(降采样到显示尺寸、异步加载与 NSCache 缓存、任务取消);视图层级优化(扁平化层级、避免透明图层)。
- 并发性能:主线程保护(UI 更新回到主线程、重任务放到后台)、批量更新(performBatchUpdates 替代逐条插入)。
- 网络性能:URLSession 配置(连接池、URLCache 内存与磁盘容量、缓存策略、超时)、请求压缩头、异步解码。
- Core Data 性能:批量获取(fetchBatchSize、returnsObjectsAsFaults)、后台上下文执行重操作、NSBatchDeleteRequest 批量删除。
- 性能检查清单:按启动时间、滚动、内存、网络四个维度列出检查项,并提供“快速见效”问题与解决方案对照表(如滚动慢启用 Cell 复用与预取、内存高降采样图片并检查泄漏、启动慢延迟工作与懒加载、UI 卡顿将工作移出主线程、耗电减少后台工作并使用高效 API)。
使用方式 资料以代码示例和命令形式呈现,例如使用 xcrun xctrace record --template "Time Profiler" --launch -- /path/to/app.app 启动剖析,或在代码中使用 measureTime 与 os_signpost 进行测量。具体安装或集成步骤暂未提供。
适用场景 适用于 iOS 应用开发过程中的性能调优,包括排查内存泄漏与循环引用、优化列表滚动与图片加载、改善启动速度、减少主线程阻塞、优化网络请求与 Core Data 访问等。
限制 资料未说明该技能支持的具体 iOS/Swift 版本、依赖条件、安装方式或与其他工具的集成方式,这些信息暂未提供。