SwiftUI 的 Diffing(差异比较)机制是其高性能和声明式特性的核心。简单来说,它的目标是:以最小的代价,将视图描述(View Structs)的变化同步到屏幕渲染(Render Tree)上。 要理解这一机制,必须掌握三个核心概念:视图本质(View Nature)、身份(Identity) 和 依赖图(Dependency Graph)。 以下是详细的工作原理拆解: --- 1. 视图的本质:廉价的结构体 (Cheap Structs) 在 UIKit 中, 是一个类(Class),创建它非常昂贵(涉及内存分配、图层渲染、属性设置等)。 在 SwiftUI 中, 是一个 结构体(Struct),它是值类型。 蓝图 vs. 建筑:SwiftUI 的 View 只是“蓝图”或“指令”,而不是屏幕上的像素。 极速创建:创建一个 Struct 几乎不需要成本。因此,SwiftUI 可以肆无忌惮地在每次状态变化时销毁并重新创建整个 View 结构体树。 Diffing 的核心任务就是: 比较“旧的蓝图”和“新的蓝图”,找出不同之处,然后只修改“实际建筑”(底层渲染对象,如 l...