2016-11-12 77 views
-2

我有6个功能。我想在后台执行这些函数中的3个(异步?),在Swift 2的Xcode中执行。你能帮我吗,我怎么才能执行这3个函数而不会在UI中“冻结”?非常感谢!在后台执行功能(不冻结用户界面)

+2

苹果[并发编程指南(https://开头开发商。 apple.com/library/content/documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html)可能是一个很好的开始...... –

+1

Swift 3中的调度更好。你真的不应该再使用Swift 2了。 – Alexander

回答

0

Martin R的评论是现货,你应该阅读苹果的concurrency programming guide。但这里有一种方法可以使用:

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0) 
dispatch_async(queue) { 
    doSomethingReallySlowAndTedious() 
} 

不过要小心。通过复制粘贴并发代码,在代码中引入错误尤其容易。确保你知道每个功能和参数的作用。

(另外,考虑到最坏的情况下可缓慢功能获得永远停留如果什么用户想退出慢功能之前完成。?)

+0

Alexander Momchliov为您的问题添加了一个很好的评论。 Swift 3现在对异步的东西有更好的语法,所以你不必在我的答案的例子中使用类似C的调用。有一些很好的讨论http://stackoverflow.com/questions/37805885/how-to-create-dispatch-queue-in-swift-3/37806522 – jjs