小编Mur*_*ill的帖子

SwiftUI 使用高频数据更新 UI

我正在尝试使用来自单独后台线程的高频数据来更新主视图。我创建了两个选项卡视图,如果更新速度慢,我可以更改视图。但在另一种情况下,用户界面没有反应。我只在真实设备上观察到这种行为,在模拟器中一切正常。

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() …
Run Code Online (Sandbox Code Playgroud)

mvvm grand-central-dispatch observable swiftui combine

3
推荐指数
1
解决办法
2286
查看次数