2016-11-12 76 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