我正在创建一个从网络上加载大量不同图片的应用。所以我有两个屏幕。带有缩略图的UITableView的“主”屏幕。以及带有全尺寸图像的UICollectionView的“图像预览”屏幕,用户将在图像之间滑动。
我的任务是从网络加载图像并将它们存储到文件和内存中。使用SDWebImage非常容易。但是我经常在内存中有太多图像而导致内存警告。有时内存缓存没有足够的时间来丢弃图像和应用程序崩溃。
因此,最简单的解决方案是将最大图像数设置为存储在内存中。
答案 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。