您的位置:首页 > 其它

GCD下载图片

2015-09-25 14:57 302 查看
cell.myimage.layer.masksToBounds=YES;

cell.myimage.layer.cornerRadius=cell.myimage.frame.size.width/2;

//dispatch_async会向kBgQueue队列中加入新的任务去执行,这里kBgQueue队列使用dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)获得。dispatch_async 函数会将传入的block块放入指定的queue里执行。这个函数是异步的,这就意味着它会马上返回而无论block是否执行结束。

因此。我们能够在block里执行各种耗时的操作(如网络请求) 而同一时候不会堵塞UI线程。

dispatch_get_global_queue
会获取一个全局队列,我们姑且理解为系统为我们开启的一些全局线程。

我们用priority指定队列的优先级,而flag作为保留字段备用(一般为0)。

dispatch_get_main_queue 会返回主队列。也就是UI队列。它一般用于在其他队列中异步完毕了一些工作后,须要在UI队列中更新界面(比方上面代码中的[self updateUIWithResult:result])的情况。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

NSURL *url=[NSURL URLWithString:cellInfo.image];

NSData *data=[[NSData alloc]initWithContentsOfURL:url];

UIImage *iamge=[[UIImage alloc]initWithData:data];

if (data!=nil) {

dispatch_async(dispatch_get_main_queue(), ^{

[cell.myimage setBackgroundImage:iamge forState:UIControlStateNormal];

});

}

});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: