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

カテゴリー:  Tech タグ:  osx programming swift xcode

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

コメント

Comments powered by Disqus