Bin*_*ynh 2 binding ios swift swiftui
在 SwiftUI 中声明绑定属性有什么区别
@Binding var foo: String
Run Code Online (Sandbox Code Playgroud)
相对
var foo: Binding<String>
Run Code Online (Sandbox Code Playgroud)
如果你这样做@Binding var foo: String,那么你同时声明了三件事:
foo,这是一个String,_foo,这是一个Binding<String>(这是私有的)$foo,这是一个Binding<String>foo、_foo和之间的关系$foo为:
// this is basically how property wrappers are implemented under the hood
private var _foo: Binding<String>
var foo: String {
get { _foo.wrappedValue }
set { _foo.wrappedValue = newValue }
}
var $foo: Binding<String> {
_foo.projectedValue
}
Run Code Online (Sandbox Code Playgroud)
另请参阅SE 提案以了解更多详细信息。
如果你这样做了var foo: Binding<String>,你就会得到foo,这是 a Binding<String>。不存在$foo和之类的东西_foo。
由于Binding<String>标记为,因此您仍然可以在其上@dynamicMemberLookup使用's 成员,因此乍一看它可能看起来像是一个,但就类型系统而言它仍然是类型。例如,您不能在通常可以工作的地方使用它:StringfoofooStringBinding<String>String
Text(foo) // error
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
365 次 |
| 最近记录: |