《误差理论》——从线性到非线性:最小二乘法在参数估计中的统一矩阵视角
2026/4/11 11:15:30
let(简单引用)struct ContentView: View { let gameManager = GameManager.shared var body: some View { Text(gameManager.gameState.rawValue) // ❌ 不会自动更新! } }问题:
获取的是单例的引用
但 不会触发视图更新 当 @Published 属性变化时
SwiftUI 不知道这个对象是 ObservableObject
@ObservedObjectstruct ParentView: View { @StateObject private var manager = GameManager.shared var body: some View { ChildView(gameManager: manager) // 作为参数传递 } } struct ChildView: View { @ObservedObject var gameManager: GameManager // 从父视图接收 var body: some View { Text(gameManager.gameState.rawValue) } }特点:
✅ 会触发视图更新 当 @Published 属性变化时
❌ 可能被重新创建 如果父视图重建
适用于:从父视图传递下来的 ObservableObject
@StateObject(推荐用于单例)struct ContentView: View { @StateObject private var gameManager = GameManager.shared var body: some View { Text(gameManager.gameState.rawValue) // ✅ 会自动更新 } }特点:
✅ 会触发视图更新
✅ 不会被意外重新创建 - SwiftUI 会保持同一个实例
✅ 生命周期与视图相同 - 但因为是单例,所以实际是全局的
最适合单例场景