创建两个变量指向同一个类实例,修改一个的 name 属性,另一个也变了——这不是 Bug,这是 Swift 引用类型的设计特性。作者用「路标」比喻解释了值类型和引用类型的本质区别:struct 是数据的直接拷贝(复印文档),class 是内存地址的拷贝(复制路标,指向同一块数据)。这一设计在 iOS 应用中非常有用——用户资料在设置页、首页和通知中心共享同一个引用,修改一次就能全局同步,避免了多份独立拷贝导致的数据不一致。
🔑 核心要点
Swift 中 class 是引用类型:赋值只是复制"路标",多个变量指向同一块内存数据。
struct 是值类型:赋值是真正的数据拷贝,两份数据完全独立,像复印文档。
在 iOS 开发中,多个界面需要共享同一份用户资料时,引用类型是优势而非缺陷——一次修改全局同步。
如果你确实需要独立拷贝一个 class,需要实现 NSCopying 协议并手动创建深拷贝。
理解 值类型 vs 引用类型 是基础但至关重要的概念,它影响代码的数据一致性、并发安全和内存管理策略。
💡 金句
There's only one piece of data. Both variables are just different ways of pointing at it.