这个问题的主要原因是开发人员在SwiftUI中使用了运行在后台线程的函数,导致视图一直被重新渲染,最终崩溃。
解决这个问题的方法是将后台工作移到后台队列中。例如,可以使用DispatchQueue来异步执行后台任务,以避免在主线程上使用过多的资源。以下是示例代码:
struct ContentView: View { @State private var data: String = ""
var body: some View {
    VStack {
        Text(data)
            .onAppear {
                DispatchQueue.global(qos: .background).async {
                    let result = loadData() // 后台处理
                    DispatchQueue.main.async { // 回到主线程渲染UI
                        self.data = result
                    }
                }
            }
    }
}
func loadData() -> String {
    // 后台处理
    return "Loaded data"
}
}