iOS ● 线程 GCD

GCD:比NSOperation还要底层的API,操作底层C API,效率高,使用起来也是最方便的,不需要管生命周期.

图片异步加载:

//先将异步下载图片的任务放到dispatch_get_global_queue全局共享并发队列中执行dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{

NSURL*url=[NSURLURLWithString:@"图片的URL"];

UIImage*image=[UIImageimageWithData:[NSDatadataWithContentsOfURL:url]];

// 下载完成后需要放在dispatch_get_main_queue回到主线程更新UI,显示图片

dispatch_async(dispatch_get_main_queue(),^{

self.imageView.image=image;

});

});
iOS ● 线程 GCD_第1张图片

使用dispatch_after方法来延迟执行某项功能:

CGFloat time =3.0f;

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(time *NSEC_PER_SEC)),dispatch_get_main_queue(), ^{

//执行的方法

});

如下图,接口请求完数据后菊花效果(0.5秒消失)提示保存成功,
再经过0.7-0.5=0.2秒后返回上一个界面:


iOS ● 线程 GCD_第2张图片
Paste_Image.png

创建队列、异步、同步任务添加到队列:


dispatch_queue_t queue = dispatch_queue_create("baidu", NULL);
 
dispatch_async(queue, ^{  
    NSLog(@"异步任务,当前线程为%@", [NSThread currentThread]);  
});  
  
dispatch_sync(queue, ^{  
    NSLog(@"同步任务,当前线程为%@", [NSThread currentThread]);  
});  

你可能感兴趣的:(iOS ● 线程 GCD)