来自Afnetworking的大图像缓存

时间:2014-03-11 07:26:22

标签: ios iphone objective-c caching afnetworking

我正在使用AFNetworking将一些图像从互联网下载到我的应用程序。我正在使用此代码下载这些图片,

AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:_linkString[indexPath.item]]]];
requestOperation.responseSerializer = [AFImageResponseSerializer serializer];
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 150, 150)];
    _imageView.image = responseObject;

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Image error: %@", error);
    }];

[requestOperation start]; 

我注意到所有响应映像都是通过此方法自动缓存到磁盘上的。我的应用程序中也有这个选项。所有缓存的图像大小约为150kb。但是当我下载大约2MB大小的图像时,这些图像不会自动缓存到磁盘。

为什么要缓存小尺寸图像&大尺寸图像没有缓存?我是否使用错误的方法在AFNetworking中缓存图像?

任何人都可以使用AFNetworking为我提供缓存2MB图像的解决方案....

谢谢

1 个答案:

答案 0 :(得分:7)

问题不在于AFNetworking,而在于NSURLCache。默认情况下,NSURLCache不会缓存大于10%的文件(不确定具体百分比是多少)。

但增加缓存大小会有所帮助:

[[NSURLCache sharedURLCache] setMemoryCapacity:(20*1024*1024)];
[[NSURLCache sharedURLCache] setDiskCapacity:(200*1024*1024)];