You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中@Observable修饰的User类两种@State声明方式哪种更推荐?

两种@State声明Observable类实例的区别与推荐方案

先看你定义的User类:

import Foundation
import Observation

@Observable 
class User {
    var EmailAddress = ""
    var Password = ""
}

下面分两种写法说明适用场景和推荐原则:

1. @State var user = User()

这种写法是直接在声明时完成初始化,适合当前视图独自管理这个User实例的场景——比如这个实例只在当前视图内部使用,不需要外部传入或复用。SwiftUI会自动把这个实例存入视图的状态容器,帮你处理它的生命周期,状态变化时自动刷新视图。代码简洁直接,是视图私有状态的首选写法。

2. @State var user: User

这种写法只声明了类型,没有初始化,必须在视图构造时传入实例(比如YourView(user: preCreatedUser))。适合需要外部控制实例创建、复用已有实例,或者做依赖注入测试的场景——比如父视图已经创建了User实例,要传给子视图共享;或者测试时需要传入模拟的User对象。

推荐总结

  • 如果User实例是当前视图私用、不需要外部干预,优先选@State var user = User()。
  • 如果需要外部传入实例,就选@State var user: User,但要确保视图初始化时必须赋值,否则会编译报错。

内容的提问来源于stack exchange,提问作者user2003111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:57:02