我正在尝试使用来自独立后台线程的高频数据更新主视图。我创建了两个选项卡视图,在更新速率较慢的情况下,我可以更改视图。但在另一种情况下,用户界面没有反应。我只观察到这种行为在真实设备上出现,模拟器上一切正常。while循环仍表示imu,只是为了保持简单。有人有解决此问题的想法吗?非常感谢!
import SwiftUI
struct ContentView: View {
@EnvironmentObject var loop : Loop
var body: some View {
TabView{
VStack {
Text("Content View")
LoopView()
}.tabItem{
VStack{
Text("tab1")
Image(systemName: "car")
}
}
Text("second view").tabItem{
VStack{
Text("tab2")
Image(systemName: "star")
}
}
}
}
}
class Loop : ObservableObject {
@Published var i : Int
func startLoop() {
while true {
print("i = \(self.i)")
DispatchQueue.main.async {
self.i += 1
}
//sleep(1) // comment out to simulate worst case
}
}
init() {
DispatchQueue.global(qos: .background).async {
self.startLoop()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}