在 swift 中后台处理 viewDidLoad 上的一项艰巨任务

background processing a difficult task on viewDidLoad in swift

我目前正在制作一个应用程序,它在 viewDidLoad 方法上启动一个非常长的任务。它的本质是在很长一段时间内完全阻止视图加载,有时会导致应用程序崩溃。因此,我需要能够在后台处理这个特定任务,以便视图可以立即加载,然后在后台完成任务并在完成时更新视图。有人知道怎么做吗?

尝试使用类似这样的 GCD:

let backgroundQueue = dispatch_get_global_queue(CLong(DISPATCH_QUEUE_PRIORITY_HIGH), 0)
dispatch_async(backgroundQueue) {
    // Do your stuff on global queue.

    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        // After finish update UI on main queue.
    })
}

或者你可以使用 NSOperationQueue。在 WWDC 2105 上对它进行了很好的讨论。 https://developer.apple.com/videos/wwdc/2015/?id=226