0

我不熟悉State。我测试了代码:

import SwiftUI
class TestState {
    @State var a: Int = 3
    func increaseA() {
        print("before \(a)") //3
        a += 1
        print("after \(a)") //3?
    }
}

TestState().increaseA()

碰巧打印的值都是3!我哪里做错了?

State在应该在 a 中的注释之后View,我测试了代码:

import SwiftUI
struct TestState: View {
    @State var a: Int = 3
    func increaseA() {
        print("before \(a)")
        a += 1
        print("after \(a)")
    }

    var body: some View {
        increaseA()
        return Text(a.description)
    }
}

碰巧的是Text节目“3”,而不是“4”。我不明白。

4

1 回答 1

1

@State关键字最早是在 Swift5.1 中引入的,它是一个 @propertyWrapper,之前被称为@propertyDelegate。有关更多详细信息,请查看property-wrappers.md正如PAUL HUDSON所说:@State是专门为本地视图使用而设计的,Apple 建议将@State属性标记为私有,以真正重新强制它们不是为在其他地方访问而设计的:

于 2020-05-28T07:17:20.760 回答