Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么SwiftUI需要@Binding和@State变量的_propertyName样式初始化?_Ios_Swift_Swiftui - Fatal编程技术网

Ios 为什么SwiftUI需要@Binding和@State变量的_propertyName样式初始化?

Ios 为什么SwiftUI需要@Binding和@State变量的_propertyName样式初始化?,ios,swift,swiftui,Ios,Swift,Swiftui,如果尝试创建具有@State或@Binding属性的SwiftUI视图 例: 您将收到错误:无法将“Binding”类型的值分配给“String”类型 如果将初始值设定项更改为: init(foo: Binding<String>) { _foo = foo } 它“只是工作” “\ux”语法是怎么回事?这到底在做什么?看起来您正在ObjC中设置ivar,但我非常怀疑这是怎么回事。@Binding只是为您创建了另一个属性,如下所示 struct TestView: View

如果尝试创建具有@State或@Binding属性的SwiftUI视图

例:

您将收到错误:无法将“Binding”类型的值分配给“String”类型

如果将初始值设定项更改为:

init(foo: Binding<String>) {
    _foo = foo
}
它“只是工作”

“\ux”语法是怎么回事?这到底在做什么?看起来您正在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
}
@绑定只是为您创建另一个属性,如下所示

struct TestView: View {
    @Binding var foo: String
等于

struct TestView: View {
    var foo: String
    var _foo: Binding<String>
现在很清楚,在下面的初始化中,您只需初始化相应的成员

init(foo: Binding<String>) {
    _foo = foo
}

这有文件记录吗?我试图查看绑定的源代码,但没有看到任何关于创建shadow变量的内容…@JoeSusnick,这是通用属性包装器语法概念,请参阅文档指针!现在更有意义了!这有文件记录吗?我试图查看绑定的源代码,但没有看到任何关于创建shadow变量的内容…@JoeSusnick,这是通用属性包装器语法概念,请参阅文档指针!现在更有意义了!你也可以写self;你也可以写self;