UIの更新をマルチスレッドで行う
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の更新などメインスレッドで同期させたい処理 }