0

我一直有一个问题,无论我使用什么框架来缓存我的图像,从 AFNetworking 到 SDWebImage 的缓存技术都可以写入磁盘。每次我按主页按钮,然后返回应用程序。就像所有图像都必须重新缓存。

我不知道从哪里开始寻找

为了将 AFNetworking 用于我的常规网络功能,例如 JSON 和图像上传,我使用https://gist.github.com/sibljon/5957892来解决命名空间冲突,所以我完全覆盖了 AFNetworkings UIImageView 并坚持使用 SDWebImage打电话的

感谢jonsibley他的回答我不打电话

[imageFile setImageWithURL:[NSURL URLWithString:friendAvatar] placeholderImage:[UIImage imageNamed:@"defaultProfileImage.png"]];

我现在正在调用(现在只是前面的 SD_),它允许我覆盖 AFNetworkings 缓存。正确的?

[imageFile SD_setImageWithURL:[NSURL URLWithString:friendAvatar] placeholderImage:[UIImage imageNamed:@"defaultProfileImage.png"]];

编辑UDPATE:

经过更多测试后,我发现应用程序在恢复应用程序后正在清理缓存,而不是在它开始暂停时(按下主页按钮时)任何线索可能导致这种情况?

4

1 回答 1

3

这里有两种可能性。请注意清洁磁盘和清洁磁盘之间的区别。

  1. SDWebImagecleanDisk在收到UIApplicationWillTerminateNotification. 此方法会删除早于其到期日期的文件。之后,它会从最旧到最新清除文件,直到达到配置的最大缓存大小。

    如果您没有设置 SDImageCache 的maxCacheSize属性,则此属性将被忽略。

    如果您没有设置 SDImageCache 的maxCacheAge属性,则默认为604800秒(1 周)。

  2. 您的应用程序中是否调用了 SDWebImageclearDiskclearMemory方法?如果是这样,请在它们上设置断点以查找在恢复期间调用它们的原因。

  3. 如果#1 没有解释它,并且您从不调用“清除”方法,那么最好的选择是设置一个断点[SDImageCache -cleanDisk]并逐步执行它以查看为什么您的缓存被清除。
于 2013-07-17T22:35:22.403 回答