【问题标题】:iOS Caching images with AFImageCache doesn't seem to workiOS 使用 AFImageCache 缓存图像似乎不起作用
【发布时间】:2012-05-08 23:01:32
【问题描述】:


我正在尝试使用 AFImageCache 缓存从 URL 加载的一些图像,但没有成功......我不确定我是否做错了什么,如果你曾经使用过这个库,我会喜欢你的意见。

我从 NSURLRequest 获取图像,然后将其缓存如下

UIImage *img; //This image is a png icon returned from the server
NSData *imgData = UIImagePNGRepresentation(img); // Always checking length to make sure its more than 0, and it is

[[AFImageCache sharedImageCache] cacheImageData: imgData
                                         forURL: myURL
                                      cacheName: @"IconCache"];

在下一次运行时,我会尝试检查图像是否被缓存,但由于某种原因总是会得到nil

UIImage *myIcon = [[AFImageCache sharedImageCache] cachedImageForURL: myURL cacheName: @"IconCache"];

NSLog("%@", myIcon); // output (null)

对此有什么想法或想法吗? 谢谢。

【问题讨论】:

    标签: ios caching nsdata afnetworking


    【解决方案1】:

    您使用的是什么版本的 AFNetworking? AFImageCache 很久以前就从公共 API 中删除了。如果要进行图像缓存,请使用NSURLCache,它会在系统级别缓存所有网络响应。 AFImageCache 一直只是一个临时缓存,用于提高滚动视图中图像加载的性能。

    【讨论】:

    • 嘿,马特 :) 我有一段时间没有升级 AFNetworking,主要是因为到目前为止我的需求没有任何问题。生病试试 NSURLCache。谢谢。
    • 嘿,马特,事情是 AFImageCache 允许我通过 url 缓存数据,这将允许我稍后检查 url 是否已经缓存。 NSURLCache 可以做到这一点吗?
    • 是的,NSURLCache 允许您检查。但老实说,在很多情况下这是一个好主意™。另外,AFImageCache 现在是私有的,所以没有办法与之交互,比如检查缓存的图像是否存在。基本上,我的建议是完全忽略它。
    • 在我的具体情况下,我有一个 UITableView,当用户滚动时,我只会在他停止滚动时加载并显示图像。问题是,如果图像已经被缓存,我可以在他滚动时显示图像,因为它不占用任何流量。 NSURLCache 如何让你检查特定的 url?
    • 如果我理解正确,我强烈建议您不要描述您所描述的内容——在用户滚动时加载图像是一项功能,而 AFN 擅长这一点,因为它没有(或不应该) t,无论如何),会导致任何性能问题。不过,要回答您的问题,cachedResponseForRequest: 是您正在寻找的方法。
    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 2011-10-19
    • 2011-09-03
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多