我正在处理一个带有复杂通知计算的Swift项目。我循环遍历一组对象,我需要做一个非常复杂的操作来确定何时安排通知。目前我在做:
for item in items {
//some logic here
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
//complex operation here, then schedule notification
}
}
不幸的是,这证明是缓慢的,因为我正在为一堆试图使用相同队列的对象执行此操作。有时它不会在用户离开应用程序之前完成通知的安排。我有什么选择来改善表现?我在想,而不是让所有东西都使用全局高优先级队列,每次都能以某种方式创建新的队列,这样他们就不会相互等待了?
答案 0 :(得分:1)
其次,不是使用for循环触发多个主线程操作。你应该以这种方式放置代码。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
for item in items {
//some logic here
//complex operation here, then schedule notification
}
}
由于您没有提供复杂操作的代码,因此无法就该部分提供任何建议。随意添加后续问题。 :d