【发布时间】:2020-05-28 03:06:06
【问题描述】:
我不熟悉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应该在 SwfitUI 视图中,而不是在普通类中。 -
@Asperi,我很好奇,所以尝试了一下,将其更改为 View 并没有改变行为。也许
@State依赖于其他一些 SwiftUI 上下文? -
当然可以——我想你最好从developer.apple.com/tutorials/swiftui/tutorials开始
-
我认为 Xcode 提示:“在视图更新期间修改状态,这将导致未定义的行为”解释了原因。
标签: swift swiftui swiftui-state