zoukankan      html  css  js  c++  java
  • 线层,dispatch,

    1,声明 创建一个队列

    dispatch_queue_t network_queue;   

    network_queue = dispatch_queue_create("com.myapp.network", nill);  

    2,异步并行 执行(队列 + 要执行的代码)

    dispatch_async(network_queue, ^{
    UIImage *cellImage = [self loadMyImageFromNetwork:image_url];
    // 将图片cache到本地
    [self cacheImage:cellImage];
    .....
    } );

    3,执行完,返回主线程(线层 嵌套线层),

    dispatch_async(network_queue, ^{
    UIImage *cellImage = [self loadMyImageFromNetwork:image_url];
    // 将图片cache到本地
    [self cacheImage:cellImage];

    // 回到主线程
    dispatch_async(dispatch_get_main_queue(), ^{
    // 显示图片到界面
    [self displayImageToTableView:cellImage];
    }];

    } );

    4,相关概念:

    ^{ 
    // 显示图片到界面 
    [self displayImageToTableView:cellImage]; 
    }]; 

    }

    这玩意叫代码块,可以 拿来拿去的,像硬件的封装,可以组装的,闭包的概念,

    5,指定一定数量的延迟之后,使用 GCD 来执行代码--使用 Dispatch_after 和 Dispatch_after_f 函数

    6,都可以放到调度队列里面去:dispatch_after,dispatch_async

    7,获取 一个队列的方式,要是自己创建一个,要么直接用系统 已经创建好了的,

    dispatch_queue_t dispatch_get_global_queue(
        long priority,
        unsigned long flags); 
    
    dispatch_get_main_queue();  

    8,声明一个block,

    dispatch_block_t block = ^{

    [multicastDelegate addDelegate:delegate delegateQueue:delegateQueue];

    };

    9,获得当前的队列,

    if (dispatch_get_current_queue() == xmppQueue)

    iOS7以后 dispatch_get_current_queue 被废弃,获得当前的队列,

  • 相关阅读:
    BZOJ 3529 [Sdoi2014]数表
    bzoj 3195 [Jxoi2012]奇怪的道路
    BZOJ 4720 [Noip2016]换教室
    BZOJ 2160 拉拉队排练
    BZOJ 1031 [JSOI2007]字符加密Cipher 后缀数组教程
    BZOJ 1002 [FJOI2007]轮状病毒
    欧拉定理、拓展欧拉定理及其应用(欧拉降幂法)
    算术基本定理解析及其应用
    The 15th Zhejiang Provincial Collegiate Programming Contest(部分题解)
    网络流解析及其应用
  • 原文地址:https://www.cnblogs.com/guligei/p/3510845.html
Copyright © 2011-2022 走看看