SwiftUI全局队列在线程1上运行

SwiftUI全局队列在线程1上运行,swift,swiftui,grand-central-dispatch,Swift,Swiftui,Grand Central Dispatch,我正在尝试在我的移动应用程序中对一个非常大的数组进行排序。我使用的是SwiftUI,希望在用户点击按钮后对数组进行排序。这种排序大约需要3秒钟,所以我希望这种情况在主队列之外发生。但是,即使在调用要在全局异步块上执行的代码时,它似乎仍然会在线程1上执行,并降低我的UI速度。在此期间,CPU峰值达到100%,UI没有响应 按钮(“排序列表”){ DispatchQueue.global(qos:.background).async{ self.updateList() } } ... func u

我正在尝试在我的移动应用程序中对一个非常大的数组进行排序。我使用的是SwiftUI,希望在用户点击按钮后对数组进行排序。这种排序大约需要3秒钟,所以我希望这种情况在主队列之外发生。但是,即使在调用要在
全局
异步
块上执行的代码时,它似乎仍然会在线程1上执行,并降低我的UI速度。在此期间,CPU峰值达到100%,UI没有响应

按钮(“排序列表”){
DispatchQueue.global(qos:.background).async{
self.updateList()
}
}
...
func updateList(){
//我也试过在这里排队
变量排序:[OBJ]=[]
对于self.allObjs中的obj{

对于0中的i..请尝试以下显式重定向到主队列

注意:提供的代码越多,可以执行更好的分析

func updateList(){
//我也试过在这里排队
变量排序:[OBJ]=[]
对于self.allObjs中的obj{

对于0中的i..请尝试以下显式重定向到主队列

注意:提供的代码越多,可以执行更好的分析

func updateList(){
//我也试过在这里排队
变量排序:[OBJ]=[]
对于self.allObjs中的obj{

对于0中的i..您确定这部分代码符合您的要求吗

var sorted: [OBJ] = []

for obj in self.allObjs {
   for i in 0..<self.selected.count {
       ...
       let i = sorted.insertionIndexOf(obj, isOrderedBefore: self.sorter)
       sorted.insert(obj, at: i)
    }
 }
var排序:[OBJ]=[]
对于self.allObjs中的obj{

对于0中的i..您确定这部分代码符合您的要求吗

var sorted: [OBJ] = []

for obj in self.allObjs {
   for i in 0..<self.selected.count {
       ...
       let i = sorted.insertionIndexOf(obj, isOrderedBefore: self.sorter)
       sorted.insert(obj, at: i)
    }
 }
var排序:[OBJ]=[]
对于self.allObjs中的obj{

对于0中的i..这对我来说似乎是正确的,因此可能会发生其他事情(此代码中未显示)。这对我来说似乎是正确的,因此可能会发生其他事情(此代码中未显示)