[[SDImageCache sharedImageCache]
因为公司的项目对图片要求比较高,每个tab页面都是各种大图,所以对图片的内存及时清理显得特别的重要。
在项目中我使用了sdwebimage框架来加载网络的大图,提供给用户可以随时清理磁盘的button。但是在使用的过程中发现[[SDImageCache sharedImageCache] cleanDisk] 不起作用。
查看了sd的源码,发现他在执行清理动作的时候,是要根据你设置的最大cacheAge(NSDate*expirationDate = [NSDatedateWithTimeIntervalSinceNow:-self.maxCacheAge];)来判断是否要来做清理的动作的。而maxCacheAge是需要用户自己设置修改,否则默认就是1周(7*24*60*60)。正常一周之内的图片,都不会被清理掉。
所以可以通过设置maxCacheAge来实现最终的清理效果。
两个思路:
1.如果你的app本身不需要保存图片很久,你可以直接设置maxCacheAge为你可接受的最小时间。可以在appdelegate里,在didFinishLaunchingWithOptions里直接设置
2.如果你不希望影响设置maxCacheAge,那我采取的办法是,在用户主动要做 清理磁盘的动作时,设置maxCacheAge=0,然后在清理磁盘动作结束后,在重新设置回来。
[SDImageCache sharedImageCache].maxCacheAge=0;
[[SDImageCache sharedImageCache]cleanDisk];
在它的cleanDisk里修改
- (void)cleanDisk {
[selfcleanDiskWithCompletionBlock:^{
self.maxCacheAge= 60 * 60 * 24 * 30;
}];
}
原来:
- (void)cleanDisk {
[selfcleanDiskWithCompletionBlock:nil];
}