打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
iOS 异步下载图片

两种方式:1.新线程下载图片,主线程更新视图。代码如下:

[NSThread detachNewThreadSelector:@selector(getImageByUrl:)toTarget:selfwithObject:array];

-(void)getImageByUrl:(id)object{

   NSArray *param=(NSArray*)object;

   NSString*imgUrl=[param objectAtIndex:0];

   UIImage *image=nil;

    NSArray*array=[imgUrlcomponentsSeparatedByString:@"/"];

   NSString*pictName=[array objectAtIndex:[array count]-1];

    NSString*imgPath=[NSStringstringWithFormat:@"%@%@",BASE_API_URL,imgUrl];

    NSURL *url=[NSURLURLWithString:imgPath];

    NSData *data=[NSDatadataWithContentsOfURL:url];

   if (data) {

        image=[UIImageimageWithData:data];

        [selfcreateImageFileLocal:pictName theData:data];//将图片数据缓存到本地

    }else{

        image=[UIImageimageNamed:@"xt"];//系统默认图片

    }

    UIImageView *view =[paramobjectAtIndex:1];

    [view performSelectorOnMainThread:@selector(setImage:)withObject:imagewaitUntilDone:NO];//主线程更新视图

    

}

2.采用GCD的方式。代码如下

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

   dispatch_group_t group =dispatch_group_create();

  dispatch_group_async(group, queue, ^{

       [selfloadImage:SCROLL_IMAGE_ONE];//从网络上加载图片1

   });

  dispatch_group_async(group, queue, ^{

       [self loadImage:SCROLL_IMAGE_TWO];//从网络上加载图片1

   });

  dispatch_group_async(group, queue, ^{

       [self loadImage:SCROLL_IMAGE_THREE];//从网络上加载图片1

   });

   dispatch_group_notify(group,dispatch_get_main_queue(), ^{//三个图片全部加载完毕后更新视图

       [selfcheckImagesArray];

   });

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
GCD使用攻略
GCD实战二:资源竞争
基于第三方微信授权登录的iOS代码分析
ios通过按钮点击异步加载图片
iOS开发
iOS-关于GCD信号量那些事儿
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服