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.md。
AS PAUL HUDSON 说:@State 是专门为本地视图使用而设计的,Apple 建议将 @State 属性标记为私有以真正重新- 强制要求它们不是为在其他地方访问而设计的:
我不熟悉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.md。 AS PAUL HUDSON 说:@State 是专门为本地视图使用而设计的,Apple 建议将 @State 属性标记为私有以真正重新- 强制要求它们不是为在其他地方访问而设计的: