微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决@State 自动生成下划线前缀的成员变量

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

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

enter image description here

解决方法

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

来自 official swift docs(在 propertyWrapper 下):

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

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

enter image description here (来自better programming

至于它在 SwiftUI 上下文中的实际应用,您可以使用它来初始化 @State 变量,如 this SO answerthis blog post 中所述。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。