• GCD使用二(队列使用)


    GCD2-- 队列使用

    asunc异步并发:
    // 获得全局的并发队列
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    // 将 任务 添加 全局队列 中去 异步 执行
    dispatch_async(queue, ^{
    NSLog(@"-----下载图片1---%@", [NSThread currentThread]);
    });
    dispatch_async(queue, ^{
    NSLog(@"-----下载图片2---%@", [NSThread currentThread]);
    });

    async异步串行:
    // 1.创建一个串行队列
    dispatch_queue_t queue = dispatch_queue_create("cn.heima.queue", NULL);

    // 2.将任务添加到串行队列中 异步 执行
    dispatch_async(queue, ^{
    NSLog(@"-----下载图片1---%@", [NSThread currentThread]);
    });
    dispatch_async(queue, ^{
    NSLog(@"-----下载图片2---%@", [NSThread currentThread]);
    });


    GCD中获取串行队列2途径:
    1.用dispatch_queue_creat函数创建串行队列
    dispatch_queue_t
    dispatch_queue_creat(const char *label, dispatch_queue_attr_t attr); //队列名称,属性(一般用NULL)
    dispatch_queue_t queue = dispatch_queue_create("cn.itcast.queue", NULL);// 创建
    dispatch_release(queue);//非ARC释放手动创建的队列

    2.用主队列
    GCD自带的一特殊串行队列
    放在主队列的任务,都自动到主线程执行
    使用dispatch_get_main_queue()获取主队列
    dispatch_queue_t queue = dispatch_get_main_queue();


    async异步
    全局并发队列:
    开启新线程,并发执行任务
    手动创建串行队列:
    开启新线程,串行执行队列
    主队列:
    不开启新线程,串行执行任务


    内存管理方面:
    //Fonndation:OC
    //Core Foundation:C
    NSString *str = @"123";
    CFStringRef str2 = (_bridge CFStringRef)str;
    NSString *str3 = (_bridge NSString *)str2;

    CFArrayRe array = CFArrayCreate(NULL, NULL, 10,NULL);
    CFRelease(array);

    CGPathRef path = CGPathCreateMutable();
    CGPathRelease(path);

    /**
    函数名带有creatcopy ew etain等字眼,在不用时需要release
    GCD数据类型在ARC下不需要release
    CF(Core Foundation)的数据类型在ARC下还需要release
    */

  • 相关阅读:
    phpexcel 字符串转码
    thinkphp 3.2 linux二级目录安装
    linux 系统、命令、软件
    thinkphp3.2和phpexcel导入
    苹果手机微信分享代码失效
    thinkphp3.2与phpexcel带图片生成 完美案例
    thinkphp3.2与phpexcel基础生成
    thinkphp 3.2加载类
    thinkphp 3.2与phpexcel
    thinkphp 导出exl功能
  • 原文地址:https://www.cnblogs.com/fangchun/p/4688591.html
Copyright © 2020-2023  润新知