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
相关产品推荐
相关产品推荐

