簡體   English   中英

為什么 SwiftUI 需要 @Binding 和 @State 變量的 _propertyName 樣式初始化?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM