ios - 来自 Afnetworking 的大图像缓存

标签 ios iphone objective-c caching afnetworking

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

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 图像的解决方案....

谢谢

最佳答案

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

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

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

关于ios - 来自 Afnetworking 的大图像缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22319018/

相关文章:

iphone - 如何在不创建额外图层的情况下将多个图像绘制到 CALayer 中?

ios - 选择 DatePicker 时显示 View

ios - 配置文件不包括应用程序标识符和钥匙串(keychain)访问组权利

ios - 为什么 Xcode 会为 IBOutlet 创建弱引用?

ios - 在 iOS7 中总是无法访问

iphone - UIView 中的 UIWebView 需要链接才能在浏览器中打开

iphone - 如何使 'int'到 'string'具有特殊格式?

ios - 如何将 rtl 支持添加到我的 ios 应用程序

ios - 只要网络可用就发送数据

iPhone:cocos2d 中相机跟随玩家