iOS图像缓存在内存中自定义图像数量

时间:2014-02-14 09:53:03

标签: ios objective-c image caching memcached

我正在创建一个从网络上加载大量不同图片的应用。所以我有两个屏幕。带有缩略图的UITableView的“主”屏幕。以及带有全尺寸图像的UICollectionView的“图像预览”屏幕,用户将在图像之间滑动。

我的任务是从网络加载图像并将它们存储到文件和内存中。使用SDWebImage非常容易。但是我经常在内存中有太多图像而导致内存警告。有时内存缓存没有足够的时间来丢弃图像和应用程序崩溃。

因此,最简单的解决方案是将最大图像数设置为存储在内存中。

2 个答案:

答案 0 :(得分:1)

我没有找到任何能够将最大图像数设置为存储在内存中的库。所以我们已经制定了自己的解决方案并将其发布在github

现在很容易设置

APSmartStorage.sharedInstance.maxObjectCount = 10;
如果达到'maxObjectCount','APSmartStorage'会在存储新内存之前从内存中删除随机对象

答案 1 :(得分:0)

SDImageCache类有一些方法:

SDImageCache :: clearMemory<仅从数组中删除图像

SDImageCache :: clearDisk<删除所有

SDImageCache :: cleanDisk<更好的说法:清理缓存。

//Clear Image Cache
SDImageCache *imgCache = [[SDImageCache alloc] init];
[imgCache clearMemory];
[imgCache clearDisk];
imgCache = nil;

这是我的片段^希望它有帮助...

您可以设置最大缓存大小。通过SDImageCache :: maxMemoryCost,SDImageCache :: maxCacheSize和SDImageCache :: maxChacheAge。