0

我正在做一个应用程序..

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

我尝试使用此代码:

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

4 回答 4

4

您有多种选择,其中一种是 AFNetworking。但是,如果您使用 AFNetworking,则应该使用UIKit+AFNetworking文件夹内的UIImageView+AFNetworking类。

这是它的文档:http ://cocoadocs.org/docsets/AFNetworking/2.0.1/Categories/UIImageView+AFNetworking.html

另一个不错的选择是SDWebImage,它可以让您对缓存和图像处理进行更高级的控制,例如在显示之前处理图像、处理您自己的缓存等。

于 2013-10-23T15:54:23.577 回答
1

AFNetworking 将非常适合您的需求。它有自己的UIImageView类别,可以非常流畅地处理异步图像加载。试试看。

于 2013-10-23T15:51:07.133 回答
1

就像以前的答案所建议的那样,AFNetworking是一个很好的方法。

不过,我也想建议使用SDWebImage。那里有很多不错的功能,例如酷缓存处理和图像解压缩。

对于初学者,尝试做类似的事情

[self.image setImageWithURL:[NSURL URLWithString:imagePath]
               placeholderImage:[UIImage imageNamed:@"placeholder"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
                   [image setImage:image];
}];

当谈到加速代码时,我不确定为什么你的代码一开始就很慢,因为你已经在异步执行它。

于 2013-10-23T16:19:14.787 回答
0

AFNetworking 是一个很棒的框架,可以让你轻松地进行异步图像请求。

但是,使用 AFNetworking不会加速您的代码。

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

于 2013-10-23T16:08:23.933 回答