GCD:Grand Central Dispathch,核心中央调度,是一种异步技术。可是它是系统级的。网络
负责管理队列,是线程之上的抽象层。队列能够并行或串行运行,可以在系统级自动管理和优化线程。把任务放到队列里执行,一个任务能够是一个函数或一个block。多线程
如下的抽象度和底层函数级别从低到高。并发
已经抛弃了异步
几乎不用async
多用于网络下载,可是如今都用开源库,例如:AFNetWorking函数
多用于本地解析数据。优化
GCD中的队列称之为 dispatch queue,分类为三类:url
- (void)syncDownload{ //同步下载,阻塞主线程 NSURL *url = [NSURL URLWithString:@""]; NSData *data = [[[NSData alloc] initWithContentsOfURL:url autorelease]; UIImage *image = [[[UIImage alloc] initWithData:data] autorelease]; _imageView.image = image; }
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //耗时的操做 NSURL *url = [NSURL URLWithString:@""]; NSData *data = [[[NSData alloc] initWithContentsOfURL:url autorelease]; UIImage *image = [[[UIImage alloc] initWithData:data] autorelease]; dispatch_async(dispatch_get_main_queue(),^{ //更新界面 _imageView.image = image; }); });