GCD下载图片
2015-09-25 14:57
309 查看
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];
});
}
});
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];
});
}
});
相关文章推荐
- 流式编程的的几个实例
- C++ 嵌套类使用(三)
- monkeyrunner 自动化测试 图片对比的实现
- 数据库的知识
- [计划任务 - Linux]三分钟学会cron
- Java基础知识强化86:BigInteger类之BigInteger概述和构造方法
- 遥感数据下载地址
- Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are解决方法
- Linux日志文件
- spring中文乱码问题
- Failed to load JavaHL Library解决方法
- ssh: connect to host github.com port 22: Connection refused
- iOS笔记-导航栏透明与不透明的影响
- Entity Framework7 入门之全功能.NET版本下使用EF7(含源码)另附数据迁移常见错误处理
- eclipse运行java程序时要求Select Java Application
- jquery选择器和事件
- Swift - 给表格添加编辑功能(删除,插入)
- Swift - 自定义单元格实现微信聊天界面
- Swift - 给表格的单元格UITableViewCell添加图片,详细文本标签
- 科工网带您领略生物3D打印的魅力