![](/img/trans.png)
[英]Why does this SwiftUI List require an extra objectWillChange.send?
[英]Why does SwiftUI require _propertyName style initialization for @Binding and @State vars?
如果您嘗試創建具有 @State 或 @Binding 屬性的 SwiftUI View
前任:
struct TestView: View {
@Binding var foo: String
init(foo: Binding<String>) {
self.foo = foo
}
var body: some View {
Text(foo)
}
}
您將收到錯誤消息: Cannot assign value of type 'Binding<String>' to type 'String'
如果將初始化程序更改為:
init(foo: Binding<String>) {
_foo = foo
}
它“有效”。
' _ ' 語法是怎么回事? 這實際上在做什么? 看起來你在 ObjC 中設置了一個 ivar,但我非常懷疑這是正在發生的事情。
@Binding
只是為您創建另一個屬性,就像
struct TestView: View {
@Binding var foo: String
等於
struct TestView: View {
var foo: String
var _foo: Binding<String>
所以現在很明顯,在下面的初始化中你只是初始化了相應的成員
init(foo: Binding<String>) {
_foo = foo
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.