zoukankan      html  css  js  c++  java
  • 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), ^{
           // 汇总结果
       });
  • 相关阅读:
    7.Ubuntu16.04安装Jenkins
    5.在Gitlab创建一个基于Sping Boot Maven项目
    4.ubuntu 16.04.6 离线安装 Git
    CNN注意事项_七月算法5月深度学习班第5次课程笔记
    Github 文件选择性上传
    一个Velocity Template Language学习的框架
    设计模式学习之代理模式(Proxy)
    ibatis入门教程一
    SimpleDataFormat详解
    使用Qmake在树莓派上开发Opencv程序
  • 原文地址:https://www.cnblogs.com/happyEveryData/p/5574091.html
Copyright © 2011-2022 走看看