我不太理解SwiftUI和DispatchQueues的相关问题。以下是代码。
这段代码将持续刷新计数器状态变量,每秒钟一次。
为什么计数器不像第一个例子那样继续递增呢?
这段代码将持续刷新计数器状态变量,每秒钟一次。
// Example 1 - This works
struct TimerButtonTest : View {
@State var counter: Int = 0
var body: some View {
start()
return VStack { Text("\(counter)") }
}
func start() {
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(1000)) {
self.counter += 1
}
}
}
这并不起作用。当按钮被按下后,计数器会在1秒后加1,但随即停止。
// Example 2 - This does not work
struct TimerButtonTest : View {
@State var counter: Int = 0
var body: some View {
return Button(action: {self.start()}, label: {Text("\(counter)")})
}
func start() {
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(1000)) {
self.counter += 1
}
}
}
为什么计数器不像第一个例子那样继续递增呢?