主页

  • APM_OOMDetector

    前言 APM 中,有一个模块属于 OOM 检测,也就是内存溢出(Out of Memory),当 iOS 应用因为内存原因而系统终止时,进程会被系统直接杀死。如果是被系统直接杀死,是没有机会再去执行代码的,所以这篇文章就来讨论怎么解决这个问题。 既然无法在死亡瞬间记录,那么可以采用类似飞机的...

  • APM_符号化

    前言 符号化(Symbolication) 就是把一个内存地址,翻译成人能看懂的函数名、源文件和代码行号的一个过程。 未符号化前,调用栈中的地址: 符号化后: 在开始之前,需要了解一些基本的概念: - DWARF - dSYM - Mach-O DWARF DWARF 是一种...

  • APM_寄存器

    前言 下面讨论的是 Apple 平台目前常见的 ARM64 寄存器,不同 CPU 架构的寄存器名称和调用规则不同。 寄存器是什么 寄存器 是 CPU 内部用来临时保存数据和执行状态的高速存储单元。 程序中的数据通常保存在内存里,但 ARM64...

  • APM_函数调用栈展开

    前言 上一篇 读懂 iOS 的线程调用栈,介绍了线程栈、栈帧,以及常用寄存器 PC、SP、FP、LR 在函数调用中的作用。接下来要回答的问题是:当 App 上线后发生崩溃,如何从这些寄存器和栈内存中,还原出我们在本地开发时能在 Xcode 中看到的那条调用链? 主要是两个过程: - 栈展开 -...

  • 读懂 iOS 的线程调用栈

    开头 经常崩溃的朋友对调用栈都不陌生,比如,下面是在一个空的 Swift 项目中的 ViewController 写入一段会触发崩溃的代码: 执行到这里时,项目会崩溃,我们会得到这样的调用栈:...

  • 试图教会你用 Xcode Instrument

    前言 出来混,凡事要讲证据的,你说卡就卡吗阿 sir。 你说这里卡,证据是什么?有一些卡顿,人的肉眼无法察觉,而且不容易稳定复现,测试说卡研发说说不卡,到底咋整?又是因为什么导致的卡顿,代码那么多那么长,逻辑那么多那么乱,总不能一个个排查过去吧。如果你也有这些苦恼,那么就是时候用 Xcode...

  • AI Coding 那么快,为什么还需要 SDD?

    前言 截至 2026 年 7 月,GitHub 上关于 SDD 的库,spec-kit 已经有了 12 万多 Star,OpenSpec 也有 6 万多 Star。能在 GitHub 拿下这么高的 Star,想必是有说法的。AI 写代码已经那么快了,那么强了,为什么我们还需要...

  • 深入理解 iOS 渲染原理

    前言 很难想象 2026 年了还有人在写 iOS 的文章 这篇文章会从屏幕如何成像讲起,解释页面为什么会出现卡顿现象,梳理屏幕呈现一帧画面需要经历的流程,然后分析这个流程中的哪些环节可能会造成画面卡顿,并提供相应的解决方案。 大致有以下内容: - 屏幕成像原理 - 画面撕裂原因 -...

  • 深入理解灵动岛

    写在前面 集成灵动岛踩了一些坑,回看发现是对灵动岛的了解还不够透彻,就重新梳理了一下灵动岛从开始到结束的一整条链路,当然最好的方式是有所输出,于是就有了这篇文章。 1. 灵动岛是什么? 14 pro...

  • Tip7 - 来一次痛快的 HTTP 之旅吧

    前言 《图解 HTTP》这本书把我多年的散装网络给治好了,不像《计算机网络》那么枯燥,读起来非常的畅快,这篇文章算是一份笔记,记录了我觉得 ioser(不是 loser...)应该掌握的关于网络的知识点,在末尾也做了一些补充(因为书里没有讲的那么细,也是比较常见的面试题)。...