2014.12.16   |   iOS

Swiftで別スレッド処理をする

Java/AndroidでいうところのThread-runに相当するやつをiOSのSwiftでやってみた。

Androidも同じですが重い処理をUIスレッドでやると一瞬フリーズしたりカクカクしたりするので、少しでも処理に時間がかかるものはバックグラウンドで処理して、終わったらメインスレッド(UIスレッド)に通知しましょうというというやつです。

let qualityOfServiceClass = DISPATCH_QUEUE_PRIORITY_DEFAULT
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
    // Backgroundで行いたい重い処理はここ

    dispatch_async(dispatch_get_main_queue(), {
        // 処理が終わった後UIスレッドでやりたいことはここ
    })
})

多分これでいいはず。

AndroidのAsyncTaskみたいに高機能なクラスもきっとSwift/Objective-Cにあると思いますが、とりあえず今回はお手軽なBackgroundQueueを試してみました。

参考: http://stackoverflow.com/questions/24056205/how-to-use-background-thread-in-swift