在 SwiftUI 中, 和 都用于订阅遵循 协议的对象(即当对象的 属性变化时,刷新视图)。 它们的核心区别在于 生命周期(Lifecycle) 和 所有权(Ownership)。 简单的一句话总结:谁负责创建对象,谁就用 ;谁只是被动接收并观察对象,谁就用 。 --- 1. @StateObject (iOS 14+) 含义:表示视图拥有这个对象。 生命周期:SwiftUI 会负责创建并保持这个对象的存活。即使视图(View Struct)因为父视图的更新而被重新创建, 里的数据不会丢失,对象实例也不会被销毁重建。 使用场景:当你在视图内部初始化()一个对象时使用。 2. @ObservedObject 含义:表示视图观察这个对象,但不拥有它。 生命周期:它的生命周期不归当前视图管理。如果当前视图被父视图重新渲染(销毁并重新创建 View Struct),而在视图内部初始化的 也会被重新初始化,导致数据丢失。 使用场景:当对象是从父视图通过参数传递进来时使用。 --- 3. 经典错误示例(为什么不能混用) 如果你在应该使用 的地方使用了 ,会发生什么? 后果: 1. 当你在 ...