【问题标题】:Difference between @propertyDelegate and @propertyWrapper@propertyDelegate 和 @propertyWrapper 之间的区别
【发布时间】:2019-10-23 22:22:05
【问题描述】:

@propertyWrapper@propertyDelegate 有什么区别? 在所有 WWDC19 视频中,他们都在谈论 @propertyWrapper,但所有实际实现都使用 @propertyDelegate(即 SwiftUI - State); Xcode 11 Beta 上的编译器似乎同时接受并要求完全相同的要求:

@propertyDelegate struct A {

}
// Property delegate type 'A' does not contain a non-static property named 'value'
@propertyWrapper struct A {

}
// Property delegate type 'A' does not contain a non-static property named 'value'

请注意,在这两种情况下,编译器都会说“Property delegate”

是我遗漏了什么还是因为他们还没有决定使用哪个名称?

【问题讨论】:

    标签: swift swift5.1


    【解决方案1】:

    @propertyWrapper Swift Evolution proposal 的第二个版本中,有一个部分概述了与第一个审核版本相比的更改。在这个列表的顶部,我们有它:

    功能名称已从“属性委托”更改为 “property wrappers” 以更好地传达它们的工作方式并避免 Apple 开发者社区中“委托”一词的现有用法。

    @propertyDelegate 刚刚重命名为 @propertyWrapper@propertyDelegate 这个名字很快就会消失,尽管截至 2019 年 6 月 15 日它仍然存在于 SwiftUI 文档中。

    【讨论】:

      【解决方案2】:

      TLDR;它们是相同的,但您应该使用@propertyWrapper

      正如@JosefDolezal 在推特https://twitter.com/josefdolezal/status/1137619597002248192?s=21 上指出的那样,名称@propertyDelegate 已被核心团队https://forums.swift.org/t/returned-for-revision-se-0258-property-delegates/24080 返回以供修订。核心团队提出了多个替代命名,但由于该提案在 WWDC 之前尚未最终确定,因此他们选择了其中一个来将该功能介绍给全世界。

      因此@propertyDelegate 很可能会被删除,@propertyWrapper 很可能会保留,尽管在正在进行的演变过程中这仍可能会发生变化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-25
        • 2020-05-10
        • 2014-09-20
        • 2010-10-28
        • 2015-10-04
        • 2012-08-12
        • 2011-02-18
        • 2019-12-21
        相关资源
        最近更新 更多