iOS开发学习我收录的代码iOS面试

GCD的简单使用

2016-06-22  本文已影响363人  放肆肆肆

一. GCD基本知识

二. GCD基本使用

三. GCD线程间通信

    //获取一个全局队列
dispatch_queue_t queue = dispatch_get_global_queue(0,0);
  //开启一个线程 把下载图片的操作放在子线程中处理
dispatch_async(queue,^{
  //下载图片
      NSURL *url = [NSURL URLWithString@"图片URL地址"];
      NSData *data = [NSData         dataWithContentsOfURL:url];
      UIImage *image = [UIImage       imageWithData:data];
    NSLog(@"下载操作所在的线程__%@",[NSThread currentThread]);

//回到主线程刷新UI
dispatch_async(dispatch_get_main_queue(),^{
    self.imageView.image =image;
    //打印查看当前线程
        NSLog(@"刷新UI-----%@",[NSThread currenThread);
        });
  });

四. GCD其他常用函数

五. 使用Crearte函数创建的并发队列和全局并发队列的主要区别:

1)全局并发队列在整个应用程序中本身是默认存在的并且对应有高优先级、默认优先级、低优先级和后台优先级一共四个并发队列,我们只是选择其中的一个直接拿来用。而Create函数是实打实的从头开始去创建一个队列。
2)在iOS6.0之前,在GCD中凡是使用了带Create和retain的函数在最后都需要做一次release操作。而主队列和全局并发队列不需要我们手动release。当然了,在iOS6.0之后GCD已经被纳入到了ARC的内存管理范畴中,即便是使用retain或者create函数创建的对象也不再需要开发人员手动释放,我们像对待普通OC对象一样对待GCD就OK。
3)在使用栅栏函数的时候,苹果官方明确规定栅栏函数只有在和使用create函数自己的创建的并发队列一起使用的时候才有效(没有给出具体原因)
上一篇 下一篇

猜你喜欢

热点阅读