从一个拦截问题看 WKWebView 的多进程网络架构
WKWebView 是 iOS 中最重要的网页容器之一。日常开发里,我们通常通过它提供的 API 使用 Web 能力;但一旦遇到请求拦截、Cookie、POST Body、进程通信这类问题,只停留在 API 层往往是不够的,这时就需要进一步理解它背后的 WebKit 架构。
WKWebView 是 iOS 中最重要的网页容器之一。日常开发里,我们通常通过它提供的 API 使用 Web 能力;但一旦遇到请求拦截、Cookie、POST Body、进程通信这类问题,只停留在 API 层往往是不够的,这时就需要进一步理解它背后的 WebKit 架构。
前段时间我阅读了 iOS 26 你的 property 崩了吗? 这篇文章,当时没有太在意。结果这一阵子我自己也遇到了类似的 bug。刚好最近我又重新读了一遍新出的 objc4-950 源码,正好读到这一段,也就顺手从源码的角度来分析一下这个问题,以及到底该怎么处理。
基于 objc4-950 版本。
在 Swift Concurrency 里,actor 很容易和 @MainActor 被混成一件事。表面上看,它们都在处理“并发访问”问题;但如果把两者等同起来,后面几乎一定会写出边界模糊的代码。
这篇文章想聊一个 iOS 系统里非常有意思的空间换时间优化。
objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。
这篇文章我想讲的,不只是 Mach-O 长什么样,而是为什么我现在更愿意把它理解成一套跨阶段协议:编译器、链接器、dyld,其实都在围绕同一种文件组织方式协作。