博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有关UIImageView+AFNetworking 下载图片的线程问题
阅读量:4709 次
发布时间:2019-06-10

本文共 1640 字,大约阅读时间需要 5 分钟。

今天写了一个demo,从服务器获取图片,然后显示在cell上,大家都知道cell的重用机制,当往下拉的时候,上面的cell遮住了,下面的cell就会重用被遮住的cell,

贴代码:

NSString *urlstring=[dict objectForKey:@"imagePath"];    NSURL *url=[NSURL URLWithString:urlstring];//获取图片的url路径    NSURLRequest *urlrequest=[[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10];    NSLog(@"UI Thread is %@",[NSThread currentThread]);//这里是主线程    //使用UIImageView+AFNetWorking 异步下载图片,缓存到本地    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{         NSLog(@"current Thread :%@",[NSThread currentThread]);//这里使用异步机制,肯定是非UI线程        [cell.myImage setImageWithURLRequest:urlrequest                            placeholderImage:[UIImage imageNamed:[dict objectForKey:@"imageName"]]                                     success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {            NSLog(@"load image thread is %@",[NSThread currentThread]);//猜猜这里是什么线程??            dispatch_async(dispatch_get_main_queue(), ^{                cell.myImage.image=image;                 NSLog(@"image thread :%@",[NSThread currentThread]);//这里肯定是主线程            });                       NSLog(@"下载图片成功");        } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {            NSLog(@"图片加载失败:%@",error);        }];

刚学AFNetworking 的时候,不知道看了谁的博文,说

setImageWithURLRequest:urlrequest 这个方法是异步机制,好吧,我承认当时单纯了,直到今天我写这个demo的时候,发现如果不是用异步机制,下载的图片非常慢,有时候还会超时,滑动cell的时候会非常卡,然后我就打印线程,看看是不是在主线程下载东西了,打印结果: 看,
setImageWithURLRequest:urlrequest 这个方法中打印的线程竟然是主线程,反正我惊讶了!!

转载于:https://www.cnblogs.com/niit-soft-518/p/4030607.html

你可能感兴趣的文章
UML类图关系
查看>>
清理Visual Studio打开的项目和文件、查找和最近引用组件痕迹
查看>>
正则表达式速查表
查看>>
项目开源-基于ASP.NET Core和EF Core的快速开发框架
查看>>
UVA 580 - Critical Mass(简单DP)
查看>>
iOS应用日志:开始编写日志组件与异常日志
查看>>
Linux通过NFS实现文件共享
查看>>
15模块-Maps【管理地图控件】
查看>>
runtime
查看>>
VS2008中宽字节和普通字节的使用
查看>>
父类 子类 构造方法
查看>>
vs2015下编译duilib的几个问题
查看>>
获取周的日期范围
查看>>
css案例学习之盒子模型
查看>>
postMan模拟get和post请求,支持局域网和外网
查看>>
day16T3改错记
查看>>
Linux 安装 JDK 8
查看>>
ASP.NET Core根据环境切换NLog配置
查看>>
高质量程序设计指南c++/c语言(20)--符号常量
查看>>
strncpy实现
查看>>