hachinoBlog

hachinobuのエンジニアライフ

dispatch_asyncのバックグラウンド処理でUIをいじってはいけない

メインスレッドを止めないためにdispatch_asyncを使ってネットワーク処理をバックグラウンドで行っていた。
ネットワーク処理が完了次第メインスレッドでUIを変更するのが普通だが誤ってバックグラウンド側でUIをいじる処理を書いたら、
iPhone5 iOS6ではスクロールするたびにステータスバーがチカチカしておかしくなった。
当然だけどUIをいじったりする処理はメインスレッドでやろうって話。

//バックグラウンド処理
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  //ネットワークとかの重い処理を書く
  //ここにUIをいじる処理を書いた事によってステータスバーがチカチカしたりおかしくなった

  //メインスレッド
  dispatch_async(dispatch_get_main_queue(), ^{
    //本来はここでUIをいじったりする

  });
});