码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2016-06-10 20:23:12      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:

多线程:我们一般把耗时操作放到子线程来执行,然后主线程只做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

标签:

原文地址:http://www.cnblogs.com/happyEveryData/p/5574091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!