multithread

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
フレームワーク
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
UIViewController *__weak weakSelf = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  // スレッドセーフ
  @synchronized(self) {
      // 更新系処理等
          
  }
  
  // メインスレッド
  dispatch_async(dispatch_get_main_queue(), ^{
      // 描画関連処理等
      
});
});


dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // バックグランドでAPIなどを実行
});

dispatch_async(dispatch_get_main_queue(), ^{
    // メインスレッドで処理をしたい内容、UIを変更など。
});

// APIなどはバックグランドで実行して、UIはメインスレッドで処理をしたい場合。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // バックグランドでAPIなどを実行
    dispatch_async(dispatch_get_main_queue(), ^{
        // メインスレッドで処理をしたい内容、UIを変更など。
    });
});


// 例)画像をバックグラウンドで外部から取得してメインスレッドでセットする
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  NSURL *url = [NSURL URLWithString:@"xxxxx"];
   NSError *error = nil;
   NSData *data = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&error];
   dispatch_async(dispatch_get_main_queue(), ^{
       UIImage *img = [UIImage imageWithData:data];
   });
});
最終更新:2015年11月04日 10:49