iOS开发进阶(iOS开发实战:GCD)summary

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发进阶(iOS开发实战:GCD)summary相关的知识,希望对你有一定的参考价值。

多线程:我们一般把耗时操作放到子线程来执行,然后主线程只做UI操作

GCD是苹果开发的一个多核编程的解决办法,和(NSThread、NSOperationQueue、NSInvocationOperation)多线程技术方案相比,使用起来更加简单和方便

//网络显示图片

  self.indicator.hidden = NO;
  [self.indicator startAnimating];
  //进入异步线程
  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
      //异步下载图片
      NSURL * url = [NSURL URLWithString:@"http://anImageUrl"];
      NSData * data = [NSData dataWithContentsOfURL:url];
      //网络请求之后进入主线程
      dispatch_async(dispatch_get_main_queue(), ^{
          //关闭loading
          [self.indicator stopAnimating];
          self.indicator.hidden = YES;
          if (data) {//显示图片
              self.imageView.image = [UIImage imageWithData:data];
          }
      });
  });
 
// 延迟执行:
    double delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        // code to be executed on the main queue after delay
    });
 
 

利用GCD并行多个线程并且等待所有线程结束之后再执行其它任务

dispatch_group_t group = dispatch_group_create();
   dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{
       // 并行执行的线程一
   });
   dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{
       // 并行执行的线程二
   });
   dispatch_group_notify(group, dispatch_get_global_queue(0,0), ^{
       // 汇总结果
   });

以上是关于iOS开发进阶(iOS开发实战:GCD)summary的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发日记59-推荐两本好书

iOS多线程开发之GCD(下篇)

iOS开发多线程篇—GCD介绍

iOS开发之多线程技术—GCD篇

iOS开发之多线程 GCD

转:iOS开发多线程篇—GCD介绍