【问题标题】:@State autogenerated underscore-prefixed member variable@State 自动生成的下划线前缀成员变量
【发布时间】:2021-05-14 10:15:07
【问题描述】:

我通过 Xcode 自动补全建议注意到,@State 似乎不仅会自动生成 $-prefixed 成员来访问相应的 Binding(众所周知),而且还会自动生成 _-prefixed 成员,似乎暴露了实际的 State 包装器。

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

【问题讨论】:

    标签: swift swiftui property-wrapper


    【解决方案1】:

    我发现这实际上是由于 Swift(而不是 SwiftUI)如何在后台编译 propertyWrappers。

    来自official swift docs(在propertyWrapper下):

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

    以下是您每次使用 propertyWrapper 时发生的情况:

    (来自better programming

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 2011-04-08
      • 2014-05-09
      • 1970-01-01
      • 2010-10-18
      • 2012-08-13
      • 2018-11-13
      相关资源
      最近更新 更多