[[SDImageCache sharedImageCache] cleanDisk] 为什么不起作用的原因

因为公司的项目对图片要求比较高,每个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];

}

你可能感兴趣的:([[SDImageCache sharedImageCache] cleanDisk] 为什么不起作用的原因)