Swift处理许多复杂的操作

时间:2016-12-12 01:54:49

标签: ios swift uilocalnotification

我正在处理一个带有复杂通知计算的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
    }
}

不幸的是,这证明是缓慢的,因为我正在为一堆试图使用相同队列的对象执行此操作。有时它不会在用户离开应用程序之前完成通知的安排。我有什么选择来改善表现?我在想,而不是让所有东西都使用全局高优先级队列,每次都能以某种方式创建新的队列,这样他们就不会相互等待了?

1 个答案:

答案 0 :(得分:1)

  1. 首先,我认为你不需要使用"主线程"对于计算,主线程主要用于UI更新。您应该使用后台线程来处理那些繁重的操作并安排通知。否则你的应用程序会非常迟缓而且没有响应(因为你的主线程被这些操作占用)
  2. 其次,不是使用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