112
111

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SwiftでGCD(Grand Central Dispatch)を呼びやすくしてみる

Last updated at Posted at 2014-07-02

SwiftでもObjective-Cと同様に、普通にdispatch_async関数などが用意されており、GCDが利用できるようなのですが、

「大体バックグランドスレッドとメインスレッドを非同期で呼ぶぐらいしかやらないっしょ??」

...という事で、ちょっとした関数を書いてみました。

用意するもの

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)
}

使い方

    func onTest(sender: AnyObject) {
        
        // HUDとか出す
        // showHUD()
        
        dispatch_async_global { // ここからバックグラウンドスレッド
            // なんか重い処理
            var res = 0
            for i in 1...10000 {
                res += i
            }
            
            dispatch_async_main { // ここからメインスレッド
                // HUD消したり
                // hideHUD()
                
                // 結果をUIへ表示したり
                self.label.text = "res=\(res)"
            }
        }
    }

ちょっとだけキーを打つ回数が減るだけなので、あまり恩恵は無いかもしれませんが、今まで#defineを駆使してGCDを利用されていた方なんかはこんなやり方がしっくり来るのではないかと思います。
(保守する人が読みやすくなるかは怪しいですが。)

関連

112
111
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
112
111

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?