从一个拦截问题看 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 版本
这篇文章我来介绍一种 iOS 系统的极端激进的空间换时间优化.
objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。
在进入 App 的过程中,需要加载各种文件,这种文件必然是需要符合某种格式来让系统高效的进行阅读。
伯阳的网络笔记(十):如何正确的获取 DNS 地址
在不特殊说明是MRC的情况下,默认是ARC。
这篇文章记录 block 的 copy 和 release 过程。
0. 截获自动变量值 block 中,block 表达式截获所使用的自动变量的值,是保存该自动变量的瞬间值。在执行完 block 之后,即使改写 block 中使用的自动变量的值,也不会影响 block 执行时自动变量的值————这就是“截获”的意思;。
1. 简单概述
weak的实现
<!–# strong/retain retain 是在 MRC 时代使用的属性关键字,而 strong 是在 ARC 时代使用的属性关键字。
atomic 一般会被翻译成原子性。它表示一个”不可再分割“的单元,也就是单指令操作。
0. 前言
前段时间我阅读了 iOS 26 你的 property 崩了吗? 这篇文章,当时没有太在意。结果这一阵子我自己也遇到了类似的 bug。刚好最近我又重新读了一遍新出的 objc4-950 源码,正好读到这一段,也就顺手从源码的角度来分析一下这个问题,以及到底该怎么处理。
基于 objc4-950 版本
这篇文章我来介绍一种 iOS 系统的极端激进的空间换时间优化.
objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。
在不特殊说明是MRC的情况下,默认是ARC。
这篇文章记录 block 的 copy 和 release 过程。
0. 截获自动变量值 block 中,block 表达式截获所使用的自动变量的值,是保存该自动变量的瞬间值。在执行完 block 之后,即使改写 block 中使用的自动变量的值,也不会影响 block 执行时自动变量的值————这就是“截获”的意思;。
1. 简单概述
weak的实现
<!–# strong/retain retain 是在 MRC 时代使用的属性关键字,而 strong 是在 ARC 时代使用的属性关键字。
atomic 一般会被翻译成原子性。它表示一个”不可再分割“的单元,也就是单指令操作。
0. 前言
伯阳的网络笔记(十):如何正确的获取 DNS 地址
HTTPS
前言
0. 前言 UDP 的内容实在是少了一些,所以把 IP 的一些内容一起加上。
1. TCP是什么? 互联网有两个核心协议: IP 和 TCP。IP,即 Internet Protocol(因特网协议)负责联网主机之间的路由选择和寻址;TCP,即 Transmission Control Protocol(传输控制协议)。
网络分层 我们都知道,互联网是一个极其复杂的体系,包含了大量的应用程序和协议、各种类型的端系统、分组交换机和各种类型的链路级媒体。为了将这些整理,我们将整个网路进行了抽象分层。
1. HTTP/1.x 的问题 不得不说, HTTP/1.1 是一个伟大的协议,现在仍然有非常多的网站使用它,充分说明了它的健壮、巧妙。但是,它毕竟是一个创建于互联网时代前的协议,虽然已经很有预见性了,但是仍然有些过时了。主要有以下几个问题
先出几个问题: DNS 是什么?有什么用? DNS 的请求过程是怎么样的。递归查询和迭代查询是什么?有何区别。 DNS 中用到了哪些协议?为什么要用? DNS 有什么缺点。
前段时间我阅读了 iOS 26 你的 property 崩了吗? 这篇文章,当时没有太在意。结果这一阵子我自己也遇到了类似的 bug。刚好最近我又重新读了一遍新出的 objc4-950 源码,正好读到这一段,也就顺手从源码的角度来分析一下这个问题,以及到底该怎么处理。
weak的实现
<!–# strong/retain retain 是在 MRC 时代使用的属性关键字,而 strong 是在 ARC 时代使用的属性关键字。
atomic 一般会被翻译成原子性。它表示一个”不可再分割“的单元,也就是单指令操作。
0. 前言
基于 objc4-950 版本
这篇文章我来介绍一种 iOS 系统的极端激进的空间换时间优化.
objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。
0. 前言
在不特殊说明是MRC的情况下,默认是ARC。
这篇文章记录 block 的 copy 和 release 过程。
0. 截获自动变量值 block 中,block 表达式截获所使用的自动变量的值,是保存该自动变量的瞬间值。在执行完 block 之后,即使改写 block 中使用的自动变量的值,也不会影响 block 执行时自动变量的值————这就是“截获”的意思;。
1. 简单概述
网络分层 我们都知道,互联网是一个极其复杂的体系,包含了大量的应用程序和协议、各种类型的端系统、分组交换机和各种类型的链路级媒体。为了将这些整理,我们将整个网路进行了抽象分层。
1. HTTP/1.x 的问题 不得不说, HTTP/1.1 是一个伟大的协议,现在仍然有非常多的网站使用它,充分说明了它的健壮、巧妙。但是,它毕竟是一个创建于互联网时代前的协议,虽然已经很有预见性了,但是仍然有些过时了。主要有以下几个问题
先出几个问题: DNS 是什么?有什么用? DNS 的请求过程是怎么样的。递归查询和迭代查询是什么?有何区别。 DNS 中用到了哪些协议?为什么要用? DNS 有什么缺点。
2026年2月28日,美以联军对伊朗发动大规模军事袭击,截至3月30日,该地区冲突已持续近一个月。与以往战争中科技仅承担辅助角色不同,人工智能(AI)在此次战事中全程深度参与,既是重塑战场博弈模式的关键变量,其影响也随战事升级逐步渗透至AI产业上下游及全球金融市场。一个月以来,AI与美伊战事相互交织、相互作用,既...
作为一名深耕 iOS 开发多年的老炮,最近一头扎进 Agent 开发领域越挖越上头 —— 本以为堆大模型、调 Prompt 就能搞定落地,结果踩了无数坑才彻底明白:实验室demo跑通不算真本事,千次迭代、复杂扰动下不崩溃、不跑偏,才是生产级Agent的核心门槛。 上周抱着啃经典理论的心态翻钱学森先生的《工程控制论...
想象一下:你用了半年 AI 编程助手,代码写得飞快,但是当你突然遇到 bug,但是一时半会无法使用 AI 的时候,会发生什么样的事情?
在不特殊说明是MRC的情况下,默认是ARC。
weak的实现
基于 objc4-950 版本
这篇文章记录 block 的 copy 和 release 过程。
伯阳的网络笔记(十):如何正确的获取 DNS 地址
先出几个问题: DNS 是什么?有什么用? DNS 的请求过程是怎么样的。递归查询和迭代查询是什么?有何区别。 DNS 中用到了哪些协议?为什么要用? DNS 有什么缺点。
网络分层 我们都知道,互联网是一个极其复杂的体系,包含了大量的应用程序和协议、各种类型的端系统、分组交换机和各种类型的链路级媒体。为了将这些整理,我们将整个网路进行了抽象分层。
1. HTTP/1.x 的问题 不得不说, HTTP/1.1 是一个伟大的协议,现在仍然有非常多的网站使用它,充分说明了它的健壮、巧妙。但是,它毕竟是一个创建于互联网时代前的协议,虽然已经很有预见性了,但是仍然有些过时了。主要有以下几个问题
0. 前言 UDP 的内容实在是少了一些,所以把 IP 的一些内容一起加上。
1. TCP是什么? 互联网有两个核心协议: IP 和 TCP。IP,即 Internet Protocol(因特网协议)负责联网主机之间的路由选择和寻址;TCP,即 Transmission Control Protocol(传输控制协议)。
HTTPS
前言
HTTPS
前言
HTTPS
前言
这篇文章我来介绍一种 iOS 系统的极端激进的空间换时间优化.
objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。
atomic 一般会被翻译成原子性。它表示一个”不可再分割“的单元,也就是单指令操作。
<!–# strong/retain retain 是在 MRC 时代使用的属性关键字,而 strong 是在 ARC 时代使用的属性关键字。
0. 截获自动变量值 block 中,block 表达式截获所使用的自动变量的值,是保存该自动变量的瞬间值。在执行完 block 之后,即使改写 block 中使用的自动变量的值,也不会影响 block 执行时自动变量的值————这就是“截获”的意思;。
在不特殊说明是MRC的情况下,默认是ARC。
先出几个问题: DNS 是什么?有什么用? DNS 的请求过程是怎么样的。递归查询和迭代查询是什么?有何区别。 DNS 中用到了哪些协议?为什么要用? DNS 有什么缺点。
1. HTTP/1.x 的问题 不得不说, HTTP/1.1 是一个伟大的协议,现在仍然有非常多的网站使用它,充分说明了它的健壮、巧妙。但是,它毕竟是一个创建于互联网时代前的协议,虽然已经很有预见性了,但是仍然有些过时了。主要有以下几个问题
1. TCP是什么? 互联网有两个核心协议: IP 和 TCP。IP,即 Internet Protocol(因特网协议)负责联网主机之间的路由选择和寻址;TCP,即 Transmission Control Protocol(传输控制协议)。
0. 前言 UDP 的内容实在是少了一些,所以把 IP 的一些内容一起加上。
0. 前言 UDP 的内容实在是少了一些,所以把 IP 的一些内容一起加上。
在进入 App 的过程中,需要加载各种文件,这种文件必然是需要符合某种格式来让系统高效的进行阅读。
在进入 App 的过程中,需要加载各种文件,这种文件必然是需要符合某种格式来让系统高效的进行阅读。
在进入 App 的过程中,需要加载各种文件,这种文件必然是需要符合某种格式来让系统高效的进行阅读。
objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。
这篇文章我来介绍一种 iOS 系统的极端激进的空间换时间优化.
前段时间我阅读了 iOS 26 你的 property 崩了吗? 这篇文章,当时没有太在意。结果这一阵子我自己也遇到了类似的 bug。刚好最近我又重新读了一遍新出的 objc4-950 源码,正好读到这一段,也就顺手从源码的角度来分析一下这个问题,以及到底该怎么处理。
WKWebView 是 iOS 中最重要的网页容器之一。日常开发里,我们通常通过它提供的 API 使用 Web 能力;但一旦遇到请求拦截、Cookie、POST Body、进程通信这类问题,只停留在 API 层往往是不够的,这时就需要进一步理解它背后的 WebKit 架构。
WKWebView 是 iOS 中最重要的网页容器之一。日常开发里,我们通常通过它提供的 API 使用 Web 能力;但一旦遇到请求拦截、Cookie、POST Body、进程通信这类问题,只停留在 API 层往往是不够的,这时就需要进一步理解它背后的 WebKit 架构。
想象一下:你用了半年 AI 编程助手,代码写得飞快,但是当你突然遇到 bug,但是一时半会无法使用 AI 的时候,会发生什么样的事情?
想象一下:你用了半年 AI 编程助手,代码写得飞快,但是当你突然遇到 bug,但是一时半会无法使用 AI 的时候,会发生什么样的事情?
作为一名深耕 iOS 开发多年的老炮,最近一头扎进 Agent 开发领域越挖越上头 —— 本以为堆大模型、调 Prompt 就能搞定落地,结果踩了无数坑才彻底明白:实验室demo跑通不算真本事,千次迭代、复杂扰动下不崩溃、不跑偏,才是生产级Agent的核心门槛。 上周抱着啃经典理论的心态翻钱学森先生的《工程控制论...
作为一名深耕 iOS 开发多年的老炮,最近一头扎进 Agent 开发领域越挖越上头 —— 本以为堆大模型、调 Prompt 就能搞定落地,结果踩了无数坑才彻底明白:实验室demo跑通不算真本事,千次迭代、复杂扰动下不崩溃、不跑偏,才是生产级Agent的核心门槛。 上周抱着啃经典理论的心态翻钱学森先生的《工程控制论...
2026年2月28日,美以联军对伊朗发动大规模军事袭击,截至3月30日,该地区冲突已持续近一个月。与以往战争中科技仅承担辅助角色不同,人工智能(AI)在此次战事中全程深度参与,既是重塑战场博弈模式的关键变量,其影响也随战事升级逐步渗透至AI产业上下游及全球金融市场。一个月以来,AI与美伊战事相互交织、相互作用,既...
2026年2月28日,美以联军对伊朗发动大规模军事袭击,截至3月30日,该地区冲突已持续近一个月。与以往战争中科技仅承担辅助角色不同,人工智能(AI)在此次战事中全程深度参与,既是重塑战场博弈模式的关键变量,其影响也随战事升级逐步渗透至AI产业上下游及全球金融市场。一个月以来,AI与美伊战事相互交织、相互作用,既...