【发布时间】:2021-05-14 10:15:07
【问题描述】:
我通过 Xcode 自动补全建议注意到,@State 似乎不仅会自动生成 $-prefixed 成员来访问相应的 Binding(众所周知),而且还会自动生成 _-prefixed 成员,似乎暴露了实际的 State 包装器。
这让我想知道,它的用例是什么,文档中哪里提到了它?
【问题讨论】:
标签: swift swiftui property-wrapper
我通过 Xcode 自动补全建议注意到,@State 似乎不仅会自动生成 $-prefixed 成员来访问相应的 Binding(众所周知),而且还会自动生成 _-prefixed 成员,似乎暴露了实际的 State 包装器。
这让我想知道,它的用例是什么,文档中哪里提到了它?
【问题讨论】:
标签: swift swiftui property-wrapper
我发现这实际上是由于 Swift(而不是 SwiftUI)如何在后台编译 propertyWrappers。
来自official swift docs(在propertyWrapper下):
编译器通过在被包装属性的名称前加上下划线 (_) 来合成包装类型实例的存储——例如,someProperty 的包装被存储为 _someProperty。包装器的合成存储具有私有访问控制级别。
以下是您每次使用 propertyWrapper 时发生的情况:
关于它在 SwiftUI 上下文中的实际应用,您可以使用它来初始化@State 变量,如this SO answer 或this blog post 所述。
【讨论】: