SwiftUI 状态值不会改变

SwiftUI State value doesn't change

我不熟悉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应该在一个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”。我不明白。

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