@propertyDelegate 和@propertyWrapper 的区别
Difference between @propertyDelegate and @propertyWrapper
@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".
我是不是漏掉了什么,或者这是因为他们还没有决定使用哪个名称?
TLDR;它们是相同的,但您应该使用 @propertyWrapper
.
正如@JosefDolezal 在推特上指出的那样https://twitter.com/josefdolezal/status/1137619597002248192?s=21, the name @propertyDelegate
was returned for revision by the core team https://forums.swift.org/t/returned-for-revision-se-0258-property-delegates/24080。核心团队提出了多个备选命名方案,但由于在 WWDC 之前尚未最终确定方案,他们选择了其中一个来向全世界介绍此功能。
所以很可能 @propertyDelegate
会被删除,@propertyWrapper
很可能会保留下来,尽管这在正在进行的演变过程中仍可能会发生变化。
在 @propertyWrapper
Swift Evolution proposal 的第二个版本中,有一个部分概述了 与第一个审核版本 相比的变化。在此列表的顶部,我们有它:
The name of the feature has been changed from "property delegates" to
"property wrappers" to better communicate how they work and avoid the
existing uses of the term "delegate" in the Apple developer community.
@propertyDelegate
刚刚重命名为 @propertyWrapper
。 @propertyDelegate
这个名字很快就会消失,尽管它仍然存在于 2019 年 6 月 15 日的 SwiftUI
文档中。
@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".
我是不是漏掉了什么,或者这是因为他们还没有决定使用哪个名称?
TLDR;它们是相同的,但您应该使用 @propertyWrapper
.
正如@JosefDolezal 在推特上指出的那样https://twitter.com/josefdolezal/status/1137619597002248192?s=21, the name @propertyDelegate
was returned for revision by the core team https://forums.swift.org/t/returned-for-revision-se-0258-property-delegates/24080。核心团队提出了多个备选命名方案,但由于在 WWDC 之前尚未最终确定方案,他们选择了其中一个来向全世界介绍此功能。
所以很可能 @propertyDelegate
会被删除,@propertyWrapper
很可能会保留下来,尽管这在正在进行的演变过程中仍可能会发生变化。
在 @propertyWrapper
Swift Evolution proposal 的第二个版本中,有一个部分概述了 与第一个审核版本 相比的变化。在此列表的顶部,我们有它:
The name of the feature has been changed from "property delegates" to "property wrappers" to better communicate how they work and avoid the existing uses of the term "delegate" in the Apple developer community.
@propertyDelegate
刚刚重命名为 @propertyWrapper
。 @propertyDelegate
这个名字很快就会消失,尽管它仍然存在于 2019 年 6 月 15 日的 SwiftUI
文档中。