如何使用AFNetworking下载许多图像?

时间:2013-10-23 15:47:56

标签: ios iphone ios6 afnetworking sdwebimage

我正在制作应用..

我需要从服务器下载很多图片,但我不知道该怎么做:(

我尝试使用此代码:

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是最好的选择,不是吗?

4 个答案:

答案 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 不会加快您的代码。

可能会使你的代码变慢,但差异应该是无关紧要的,只有当你的图像太大而且解码图像的时间很长时(我不认为这是问题)。