Posted at

UIの更新をマルチスレッドで

More than 3 years have passed since last update.


dispatch処理する関数

GDCを使うとそもそもマルチスレッドの処理も簡単に記述できるのですが、読みやすいプログラムにするために以下のようなメソッドを用意しておきます。UIの更新を非同期にしたいとかなら十分。


func dispatch_async_main(block: () -> ()) {
dispatch_async(dispatch_get_main_queue(), block)
}

func dispatch_async_global(block: () -> ()) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)


マルチスレッド処理の記述

上記の関数を利用してバックグランドとメインのUIの更新処理をそれぞれのブロックに記述します。

  dispatch_async_global {

// Background operations
// 通信など時間がかかる処理

// Mainと同期する
self.dispatch_async_main {
// UIの更新などメインスレッドで同期させたい処理
}