DEVELOPMENT NOTES · 7 篇

并发与性能

这一组围绕任务在哪执行、界面为何卡顿展开。既有多线程基础,也有 RunLoop 和检测手段,适合把执行顺序画清楚,再回到代码核对。

怎么读这一组

  1. 多线程系列按一、二、三阅读,区分任务、队列、线程和同步等待;遇到嵌套调用时,先写出可能的执行顺序。
  2. 再读 RunLoop 与线程保活,关注线程在什么情况下等待、被什么事件唤醒,而不是把“保活”当成通用解决方案。
  3. 卡顿检测和 UIKit 调优要联系实际负载来看:先明确测量对象,再比较耗时、调用栈和屏幕表现,旧示例的数值不作为当前设备结论。

这是 2015–2017 年的历史记录,示例未在本次整理中重新运行验证。先核对文章日期和版本说明,再决定哪些思路适合当前项目。

主题文章

7 篇 · 新到旧
  • iOS开发优化篇之卡顿检测

    通过监控主线程 RunLoop 状态和等待超时检测卡顿,并介绍获取线程栈帧、遍历调用栈与符号化的过程,说明如何在应用运行期间留下可排查的上下文。

    SindriLinRunLoop · 卡顿检测 · 调用栈
  • iOS开发深入研究Runloop与线程保活

    结合 AFNetworking 2.x 的网络线程分析 RunLoop 保活方式,说明照搬循环运行代码可能造成的对象持有与线程退出问题,再用示例验证更可控的生命周期处理。

    bestswifterRunLoop · NSThread · AFNetworking
  • Swift之优化UITableViewCell高度计算

    围绕 UITableView 重复计算单元格高度的问题,结合 FDTemplateLayoutCell 的思路介绍模板测量与高度缓存,并用 Swift 封装接口来减少滚动过程中的重复工作。

    大石头布UITableViewCell · 行高缓存 · FDTemplateLayoutCell
  • iOS开发之UIKit性能调优实战讲解

    以列表界面为实验对象,结合 Instruments 的 Core Animation 工具观察图层混合、图片尺寸、颜色格式和离屏渲染,解释常见滚动性能问题与针对性的调整思路。

    bestswifterInstruments · Core Animation · 离屏渲染
  • Bison眼中的iOS开发多线程是这样的(三)

    围绕 GCD 的任务与队列展开,比较主队列、全局队列、自建串行和并发队列,并用图片下载、重复执行和一次性初始化示例说明常见任务提交方式。

    BisonGCD · dispatch_async · dispatch_sync
  • Bison眼中的iOS开发多线程是这样的(二)

    围绕共享数据被多个线程访问的情形,介绍 synchronized 同步代码块和 NSLock 的加解锁方式,再用 NSCondition 的等待、唤醒与广播解释线程之间的协调。

    Bison线程安全 · synchronized · NSLock
  • Bison眼中的iOS开发多线程是这样的(一)

    从进程与线程的区别引入 iOS 多线程,比较 NSThread、NSOperationQueue 与 GCD,再具体演示线程创建、执行、终止和优先级,结合日志观察调度现象。

    BisonNSThread · 多线程 · 线程调度