线层,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 被废弃,获得当前的队列,

 

posted @ 2014-01-08 16:09  路在脚下,  阅读(278)  评论(0编辑  收藏  举报