标签

iOS

一年后重读得物 BuildingClosure 优化

3 minute read

2025 年 4 月,得物技术团队发了一篇文章得物 iOS 启动优化之 Building Closure,讲他们排查到 iOS 启动耗时中 BuildingClosure 阶段的一次诡异暴增。根因不是动态库、不是编译选项、不是打包脚本,而是新增的几个 ObjC 方法名,跟已有符号在 dyld 的完美哈希构造算法里...

UITextField:一个控件,半个系统

2 minute read

在 iOS 开发里,没有哪个基础控件能像 UITextField 这样—-表面上代码只有一行,背地里却牵扯到半个操作系统的子模块。它泄漏、它卡顿、它生命周期诡异、它让内存检测工具集体失语。更麻烦的是,这些问题往往不是你代码写错了,而是系统层面组合出的结果。

ImageIO线程安全与业务实践解析

2 minute read

前段时间和一位做 iOS 开发的朋友聊系统 API 的演进,他提到一个很有共鸣的观点:我们平时用得顺手的 API,即便曾经看起来稳定、安全,官方也可能因为底层优化或实现调整,悄悄改变它的运行语义。ImageIO 就是一个非常典型的例子。

从一个拦截问题看 WKWebView 的多进程网络架构

1 minute read

WKWebView 是 iOS 中最重要的网页容器之一。日常开发里,我们通常通过它提供的 API 使用 Web 能力;但一旦遇到请求拦截、Cookie、POST Body、进程通信这类问题,只停留在 API 层往往是不够的,这时就需要进一步理解它背后的 WebKit 架构。

在 iOS 26 上@property 的一个小 bug

2 minute read

前段时间我阅读了 iOS 26 你的 property 崩了吗? 这篇文章,当时没有太在意。结果这一阵子我自己也遇到了类似的 bug。刚好最近我又重新读了一遍新出的 objc4-950 源码,正好读到这一段,也就顺手从源码的角度来分析一下这个问题,以及到底该怎么处理。

Swift Actor :隔离的不是线程,而是状态

2 minute read

在 Swift Concurrency 里,actor 很容易和 @MainActor 被混成一件事。表面上看,它们都在处理“并发访问”问题;但如果把两者等同起来,后面几乎一定会写出边界模糊的代码。

如何 hook objc_msgSend

4 minute read

objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。

探究 block (二):block 截获变量

7 minute read

0. 截获自动变量值 block 中,block 表达式截获所使用的自动变量的值,是保存该自动变量的瞬间值。在执行完 block 之后,即使改写 block 中使用的自动变量的值,也不会影响 block 执行时自动变量的值————这就是“截获”的意思;。

property的研究(二):nonatomic & atomic

4 minute read

atomic 一般会被翻译成“原子性”。不过在 @property 这个语境里,没必要把它和物理学里的“原子”扯得太深。对我们来说,更重要的是理解它在 Objective-C 里到底意味着什么:getter/setter 在访问这一层,会额外做同步保护。

Back to Top ↑

Objective-C

ImageIO线程安全与业务实践解析

2 minute read

前段时间和一位做 iOS 开发的朋友聊系统 API 的演进,他提到一个很有共鸣的观点:我们平时用得顺手的 API,即便曾经看起来稳定、安全,官方也可能因为底层优化或实现调整,悄悄改变它的运行语义。ImageIO 就是一个非常典型的例子。

在 iOS 26 上@property 的一个小 bug

2 minute read

前段时间我阅读了 iOS 26 你的 property 崩了吗? 这篇文章,当时没有太在意。结果这一阵子我自己也遇到了类似的 bug。刚好最近我又重新读了一遍新出的 objc4-950 源码,正好读到这一段,也就顺手从源码的角度来分析一下这个问题,以及到底该怎么处理。

如何 hook objc_msgSend

4 minute read

objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。

探究 block (二):block 截获变量

7 minute read

0. 截获自动变量值 block 中,block 表达式截获所使用的自动变量的值,是保存该自动变量的瞬间值。在执行完 block 之后,即使改写 block 中使用的自动变量的值,也不会影响 block 执行时自动变量的值————这就是“截获”的意思;。

property的研究(二):nonatomic & atomic

4 minute read

atomic 一般会被翻译成“原子性”。不过在 @property 这个语境里,没必要把它和物理学里的“原子”扯得太深。对我们来说,更重要的是理解它在 Objective-C 里到底意味着什么:getter/setter 在访问这一层,会额外做同步保护。

Back to Top ↑

AI

对 ReAct 的复盘:失控、修正与混合架构

3 minute read

我最早接触 ReAct 的时候,对它的理解很简单。模型先想一下,再调一个工具,拿到结果以后继续往下走。这个循环本身不复杂,真正难的地方,看起来也很明确:提示词怎么写,工具描述怎么给,示例要不要补,输出格式怎么约束。

Temperature 与 Top-p 学习笔记

1 minute read

用过大语言模型 API 的人大概都见过这两个参数——Temperature 和 Top-p。调一下,输出变了;再调一下,又变了。但到底怎么回事,很多人说不清。

AI与美伊战事一个月回顾:战场博弈、产业冲击与金融震荡

less than 1 minute read

2026年2月28日,美以联军对伊朗发动大规模军事袭击,截至3月30日,该地区冲突已持续近一个月。与以往战争中科技仅承担辅助角色不同,人工智能(AI)在此次战事中全程深度参与,既是重塑战场博弈模式的关键变量,其影响也随战事升级逐步渗透至AI产业上下游及全球金融市场。一个月以来,AI与美伊战事相互交织、相互作用,既...

读《工程控制论》悟 Agent 开发

1 minute read

作为一名深耕 iOS 开发多年的老炮,最近一头扎进 Agent 开发领域越挖越上头 —— 本以为堆大模型、调 Prompt 就能搞定落地,结果踩了无数坑才彻底明白:实验室demo跑通不算真本事,千次迭代、复杂扰动下不崩溃、不跑偏,才是生产级Agent的核心门槛。 上周抱着啃经典理论的心态翻钱学森先生的《工程控制论...

Back to Top ↑

Agent

对 ReAct 的复盘:失控、修正与混合架构

3 minute read

我最早接触 ReAct 的时候,对它的理解很简单。模型先想一下,再调一个工具,拿到结果以后继续往下走。这个循环本身不复杂,真正难的地方,看起来也很明确:提示词怎么写,工具描述怎么给,示例要不要补,输出格式怎么约束。

Temperature 与 Top-p 学习笔记

1 minute read

用过大语言模型 API 的人大概都见过这两个参数——Temperature 和 Top-p。调一下,输出变了;再调一下,又变了。但到底怎么回事,很多人说不清。

读《工程控制论》悟 Agent 开发

1 minute read

作为一名深耕 iOS 开发多年的老炮,最近一头扎进 Agent 开发领域越挖越上头 —— 本以为堆大模型、调 Prompt 就能搞定落地,结果踩了无数坑才彻底明白:实验室demo跑通不算真本事,千次迭代、复杂扰动下不崩溃、不跑偏,才是生产级Agent的核心门槛。 上周抱着啃经典理论的心态翻钱学森先生的《工程控制论...

Back to Top ↑

Network

伯阳的网络笔记:TCP 基础概述

3 minute read

1. TCP是什么? 互联网有两个核心协议: IP 和 TCP。IP,即 Internet Protocol(因特网协议)负责联网主机之间的路由选择和寻址;TCP,即 Transmission Control Protocol(传输控制协议)。

伯阳的网络笔记:HTTP/2 基础

less than 1 minute read

1. HTTP/1.x 的问题 不得不说, HTTP/1.1 是一个伟大的协议,现在仍然有非常多的网站使用它,充分说明了它的健壮、巧妙。但是,它毕竟是一个创建于互联网时代前的协议,虽然已经很有预见性了,但是仍然有些过时了。主要有以下几个问题

伯阳的网络笔记:HTTP 基础

2 minute read

网络分层 我们都知道,互联网是一个极其复杂的体系,包含了大量的应用程序和协议、各种类型的端系统、分组交换机和各种类型的链路级媒体。为了将这些整理,我们将整个网路进行了抽象分层。

伯阳的网络笔记:DNS

4 minute read

先出几个问题: DNS 是什么?有什么用? DNS 的请求过程是怎么样的。递归查询和迭代查询是什么?有何区别。 DNS 中用到了哪些协议?为什么要用? DNS 有什么缺点。

Back to Top ↑

property

在 iOS 26 上@property 的一个小 bug

2 minute read

前段时间我阅读了 iOS 26 你的 property 崩了吗? 这篇文章,当时没有太在意。结果这一阵子我自己也遇到了类似的 bug。刚好最近我又重新读了一遍新出的 objc4-950 源码,正好读到这一段,也就顺手从源码的角度来分析一下这个问题,以及到底该怎么处理。

property的研究(二):nonatomic & atomic

4 minute read

atomic 一般会被翻译成“原子性”。不过在 @property 这个语境里,没必要把它和物理学里的“原子”扯得太深。对我们来说,更重要的是理解它在 Objective-C 里到底意味着什么:getter/setter 在访问这一层,会额外做同步保护。

Back to Top ↑

runtime

如何 hook objc_msgSend

4 minute read

objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。

Back to Top ↑

block

探究 block (二):block 截获变量

7 minute read

0. 截获自动变量值 block 中,block 表达式截获所使用的自动变量的值,是保存该自动变量的瞬间值。在执行完 block 之后,即使改写 block 中使用的自动变量的值,也不会影响 block 执行时自动变量的值————这就是“截获”的意思;。

Back to Top ↑

HTTP

伯阳的网络笔记:HTTP/2 基础

less than 1 minute read

1. HTTP/1.x 的问题 不得不说, HTTP/1.1 是一个伟大的协议,现在仍然有非常多的网站使用它,充分说明了它的健壮、巧妙。但是,它毕竟是一个创建于互联网时代前的协议,虽然已经很有预见性了,但是仍然有些过时了。主要有以下几个问题

伯阳的网络笔记:HTTP 基础

2 minute read

网络分层 我们都知道,互联网是一个极其复杂的体系,包含了大量的应用程序和协议、各种类型的端系统、分组交换机和各种类型的链路级媒体。为了将这些整理,我们将整个网路进行了抽象分层。

伯阳的网络笔记:DNS

4 minute read

先出几个问题: DNS 是什么?有什么用? DNS 的请求过程是怎么样的。递归查询和迭代查询是什么?有何区别。 DNS 中用到了哪些协议?为什么要用? DNS 有什么缺点。

Back to Top ↑

weak

Back to Top ↑

DNS

伯阳的网络笔记:DNS

4 minute read

先出几个问题: DNS 是什么?有什么用? DNS 的请求过程是怎么样的。递归查询和迭代查询是什么?有何区别。 DNS 中用到了哪些协议?为什么要用? DNS 有什么缺点。

Back to Top ↑

Web

伯阳的网络笔记:HTTP/2 基础

less than 1 minute read

1. HTTP/1.x 的问题 不得不说, HTTP/1.1 是一个伟大的协议,现在仍然有非常多的网站使用它,充分说明了它的健壮、巧妙。但是,它毕竟是一个创建于互联网时代前的协议,虽然已经很有预见性了,但是仍然有些过时了。主要有以下几个问题

伯阳的网络笔记:HTTP 基础

2 minute read

网络分层 我们都知道,互联网是一个极其复杂的体系,包含了大量的应用程序和协议、各种类型的端系统、分组交换机和各种类型的链路级媒体。为了将这些整理,我们将整个网路进行了抽象分层。

Back to Top ↑

Transport

伯阳的网络笔记:TCP 基础概述

3 minute read

1. TCP是什么? 互联网有两个核心协议: IP 和 TCP。IP,即 Internet Protocol(因特网协议)负责联网主机之间的路由选择和寻址;TCP,即 Transmission Control Protocol(传输控制协议)。

Back to Top ↑

TLS

Back to Top ↑

HTTPS

Back to Top ↑

Security

Back to Top ↑

objc_msgSend

如何 hook objc_msgSend

4 minute read

objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。

Back to Top ↑

bug

ImageIO线程安全与业务实践解析

2 minute read

前段时间和一位做 iOS 开发的朋友聊系统 API 的演进,他提到一个很有共鸣的观点:我们平时用得顺手的 API,即便曾经看起来稳定、安全,官方也可能因为底层优化或实现调整,悄悄改变它的运行语义。ImageIO 就是一个非常典型的例子。

在 iOS 26 上@property 的一个小 bug

2 minute read

前段时间我阅读了 iOS 26 你的 property 崩了吗? 这篇文章,当时没有太在意。结果这一阵子我自己也遇到了类似的 bug。刚好最近我又重新读了一遍新出的 objc4-950 源码,正好读到这一段,也就顺手从源码的角度来分析一下这个问题,以及到底该怎么处理。

Back to Top ↑

atomic

property的研究(二):nonatomic & atomic

4 minute read

atomic 一般会被翻译成“原子性”。不过在 @property 这个语境里,没必要把它和物理学里的“原子”扯得太深。对我们来说,更重要的是理解它在 Objective-C 里到底意味着什么:getter/setter 在访问这一层,会额外做同步保护。

Back to Top ↑

copy

Back to Top ↑

closure

探究 block (二):block 截获变量

7 minute read

0. 截获自动变量值 block 中,block 表达式截获所使用的自动变量的值,是保存该自动变量的瞬间值。在执行完 block 之后,即使改写 block 中使用的自动变量的值,也不会影响 block 执行时自动变量的值————这就是“截获”的意思;。

Back to Top ↑

memory

Back to Top ↑

strong

Back to Top ↑

Internet

伯阳的网络笔记:DNS

4 minute read

先出几个问题: DNS 是什么?有什么用? DNS 的请求过程是怎么样的。递归查询和迭代查询是什么?有何区别。 DNS 中用到了哪些协议?为什么要用? DNS 有什么缺点。

Back to Top ↑

HTTP2

伯阳的网络笔记:HTTP/2 基础

less than 1 minute read

1. HTTP/1.x 的问题 不得不说, HTTP/1.1 是一个伟大的协议,现在仍然有非常多的网站使用它,充分说明了它的健壮、巧妙。但是,它毕竟是一个创建于互联网时代前的协议,虽然已经很有预见性了,但是仍然有些过时了。主要有以下几个问题

Back to Top ↑

TCP

伯阳的网络笔记:TCP 基础概述

3 minute read

1. TCP是什么? 互联网有两个核心协议: IP 和 TCP。IP,即 Internet Protocol(因特网协议)负责联网主机之间的路由选择和寻址;TCP,即 Transmission Control Protocol(传输控制协议)。

Back to Top ↑

UDP

Back to Top ↑

IP

Back to Top ↑

Mach-O

Back to Top ↑

Binary

Back to Top ↑

Linker

Back to Top ↑

hook

如何 hook objc_msgSend

4 minute read

objc_msgSend 可以作为符号被重绑定,但真正困难的不是找到它,而是在不破坏 ABI、寄存器现场和返回路径的前提下完成 hook。

Back to Top ↑

performance

Back to Top ↑

Swift

Swift Actor :隔离的不是线程,而是状态

2 minute read

在 Swift Concurrency 里,actor 很容易和 @MainActor 被混成一件事。表面上看,它们都在处理“并发访问”问题;但如果把两者等同起来,后面几乎一定会写出边界模糊的代码。

Back to Top ↑

Concurrency

Swift Actor :隔离的不是线程,而是状态

2 minute read

在 Swift Concurrency 里,actor 很容易和 @MainActor 被混成一件事。表面上看,它们都在处理“并发访问”问题;但如果把两者等同起来,后面几乎一定会写出边界模糊的代码。

Back to Top ↑

Runtime

Back to Top ↑

WebKit

从一个拦截问题看 WKWebView 的多进程网络架构

1 minute read

WKWebView 是 iOS 中最重要的网页容器之一。日常开发里,我们通常通过它提供的 API 使用 Web 能力;但一旦遇到请求拦截、Cookie、POST Body、进程通信这类问题,只停留在 API 层往往是不够的,这时就需要进一步理解它背后的 WebKit 架构。

Back to Top ↑

Browser

从一个拦截问题看 WKWebView 的多进程网络架构

1 minute read

WKWebView 是 iOS 中最重要的网页容器之一。日常开发里,我们通常通过它提供的 API 使用 Web 能力;但一旦遇到请求拦截、Cookie、POST Body、进程通信这类问题,只停留在 API 层往往是不够的,这时就需要进一步理解它背后的 WebKit 架构。

Back to Top ↑

Coding

Back to Top ↑

Productivity

Back to Top ↑

Engineering

读《工程控制论》悟 Agent 开发

1 minute read

作为一名深耕 iOS 开发多年的老炮,最近一头扎进 Agent 开发领域越挖越上头 —— 本以为堆大模型、调 Prompt 就能搞定落地,结果踩了无数坑才彻底明白:实验室demo跑通不算真本事,千次迭代、复杂扰动下不崩溃、不跑偏,才是生产级Agent的核心门槛。 上周抱着啃经典理论的心态翻钱学森先生的《工程控制论...

Back to Top ↑

Geopolitics

AI与美伊战事一个月回顾:战场博弈、产业冲击与金融震荡

less than 1 minute read

2026年2月28日,美以联军对伊朗发动大规模军事袭击,截至3月30日,该地区冲突已持续近一个月。与以往战争中科技仅承担辅助角色不同,人工智能(AI)在此次战事中全程深度参与,既是重塑战场博弈模式的关键变量,其影响也随战事升级逐步渗透至AI产业上下游及全球金融市场。一个月以来,AI与美伊战事相互交织、相互作用,既...

Back to Top ↑

Finance

AI与美伊战事一个月回顾:战场博弈、产业冲击与金融震荡

less than 1 minute read

2026年2月28日,美以联军对伊朗发动大规模军事袭击,截至3月30日,该地区冲突已持续近一个月。与以往战争中科技仅承担辅助角色不同,人工智能(AI)在此次战事中全程深度参与,既是重塑战场博弈模式的关键变量,其影响也随战事升级逐步渗透至AI产业上下游及全球金融市场。一个月以来,AI与美伊战事相互交织、相互作用,既...

Back to Top ↑

dyld

一年后重读得物 BuildingClosure 优化

3 minute read

2025 年 4 月,得物技术团队发了一篇文章得物 iOS 启动优化之 Building Closure,讲他们排查到 iOS 启动耗时中 BuildingClosure 阶段的一次诡异暴增。根因不是动态库、不是编译选项、不是打包脚本,而是新增的几个 ObjC 方法名,跟已有符号在 dyld 的完美哈希构造算法里...

Back to Top ↑

启动优化

一年后重读得物 BuildingClosure 优化

3 minute read

2025 年 4 月,得物技术团队发了一篇文章得物 iOS 启动优化之 Building Closure,讲他们排查到 iOS 启动耗时中 BuildingClosure 阶段的一次诡异暴增。根因不是动态库、不是编译选项、不是打包脚本,而是新增的几个 ObjC 方法名,跟已有符号在 dyld 的完美哈希构造算法里...

Back to Top ↑

BuildingClosure

一年后重读得物 BuildingClosure 优化

3 minute read

2025 年 4 月,得物技术团队发了一篇文章得物 iOS 启动优化之 Building Closure,讲他们排查到 iOS 启动耗时中 BuildingClosure 阶段的一次诡异暴增。根因不是动态库、不是编译选项、不是打包脚本,而是新增的几个 ObjC 方法名,跟已有符号在 dyld 的完美哈希构造算法里...

Back to Top ↑

完美哈希

一年后重读得物 BuildingClosure 优化

3 minute read

2025 年 4 月,得物技术团队发了一篇文章得物 iOS 启动优化之 Building Closure,讲他们排查到 iOS 启动耗时中 BuildingClosure 阶段的一次诡异暴增。根因不是动态库、不是编译选项、不是打包脚本,而是新增的几个 ObjC 方法名,跟已有符号在 dyld 的完美哈希构造算法里...

Back to Top ↑

lookup8

一年后重读得物 BuildingClosure 优化

3 minute read

2025 年 4 月,得物技术团队发了一篇文章得物 iOS 启动优化之 Building Closure,讲他们排查到 iOS 启动耗时中 BuildingClosure 阶段的一次诡异暴增。根因不是动态库、不是编译选项、不是打包脚本,而是新增的几个 ObjC 方法名,跟已有符号在 dyld 的完美哈希构造算法里...

Back to Top ↑