@State 自动生成下划线前缀的成员变量

Mil*_*dek 1 swift swiftui property-wrapper

我注意到,通过 Xcode 自动完成建议,它@State似乎不仅自动生成一个$- 前缀成员用于访问相应的Binding(众所周知),而且还自动生成一个_- 前缀成员,似乎暴露了实际的State包装器。

这让我想知道它的用例是什么,文档中在哪里提到了它?

在此输入图像描述

Mil*_*dek 8

我发现这实际上是由于 Swift(而不是 SwiftUI)propertyWrapper在底层编译的方式造成的。

\n

来自官方 swift 文档(在 propertyWrapper 下):

\n
\n

编译器通过在包装属性名称前添加下划线 (_)\xe2\x80\x94 来合成包装类型实例的存储,例如,someProperty 的包装存储为 _someProperty。包装器的综合存储具有私有的访问控制级别。

\n
\n

这是每次使用时发生的情况propertyWrapper

\n

在此输入图像描述\n (来自更好的编程

\n

至于它在 SwiftUI 上下文中的实际应用,您可以使用它来初始化变量,如此 SO 答案此博客文章@State中所述。

\n