如何解决@State 自动生成下划线前缀的成员变量
我通过 Xcode 自动完成建议注意到 @State
似乎不仅会自动生成一个以 $
为前缀的成员来访问相应的 Binding
(众所周知),而且还会自动生成一个 { {1}} 前缀成员,似乎暴露了实际的 _
包装器。
这让我想知道它的用例是什么,文档中在哪里提到了它?
解决方法
我发现这实际上是由于 Swift(而不是 SwiftUI)在幕后编译 propertyWrapper
的方式。
来自 official swift docs(在 propertyWrapper 下):
编译器通过在被包装属性的名称前面加上下划线 (_) 来合成包装器类型实例的存储——例如,someProperty 的包装器存储为 _someProperty。包装器的合成存储具有私有访问控制级别。
这是每次使用 propertyWrapper
时发生的情况:
至于它在 SwiftUI 上下文中的实际应用,您可以使用它来初始化 @State
变量,如 this SO answer 或 this blog post 中所述。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。