我正在制作应用..
我需要从服务器下载很多图片,但我不知道该怎么做:(
我尝试使用此代码:
UIImageView *image=(UIImageView *)[cell viewWithTag:100];
dispatch_async(dispatch_get_global_queue(0,0), ^{
NSData * data = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString:@"FileName"]];
if ( data == nil )
return;
dispatch_async(dispatch_get_main_queue(), ^{
image.image=[UIImage imageWithData:data];
});
data=nil;
});
这段代码很慢......我需要更快地完成...我认为AFNetworking是最好的选择,不是吗?
答案 0 :(得分:4)
你有几种选择,一种是AFNetworking。但是,如果您使用AFNetworking,则应使用UIImageView+AFNetworking文件夹中的UIKit+AFNetworking类。
以下是它的文档:http://cocoadocs.org/docsets/AFNetworking/2.0.1/Categories/UIImageView+AFNetworking.html
另一个很好的选择是SDWebImage,它可以让您更高级地控制缓存和图像处理,例如在显示图像之前处理图像,处理您自己的缓存等等。
答案 1 :(得分:1)
AFNetworking将完美满足您的需求。它有自己的UIImageView
类别,可以非常顺利地处理异步图像加载。试一试。
答案 2 :(得分:1)
与以前的答案一样,AFNetworking是一个很好的方法。
我也想建议使用SDWebImage。那里有很多不错的功能,比如很酷的缓存处理和图像解压缩。
对于初学者,尝试做类似
的事情[self.image setImageWithURL:[NSURL URLWithString:imagePath]
placeholderImage:[UIImage imageNamed:@"placeholder"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
[image setImage:image];
}];
当谈到加速代码时,我不确定为什么你的代码首先是缓慢的,因为你已经异步地执行了它。
答案 3 :(得分:0)
AFNetworking是一个很棒的框架,可以让您轻松完成异步图像请求。
然而,使用AFNetworking 不会加快您的代码。
可能会使你的代码变慢,但差异应该是无关紧要的,只有当你的图像太大而且解码图像的时间很长时(我不认为这是问题)。