因?yàn)楣镜捻?xiàng)目對圖片要求比較高,每個(gè)tab頁面都是各種大圖育韩,所以對圖片的內(nèi)存及時(shí)清理顯得特別的重要。
在項(xiàng)目中我使用了sdwebimage框架來加載網(wǎng)絡(luò)的大圖埃叭,提供給用戶可以隨時(shí)清理磁盤的button悉罕。但是在使用的過程中發(fā)現(xiàn)[[SDImageCache sharedImageCache] cleanDisk] 不起作用。
查看了sd的源碼壁袄,發(fā)現(xiàn)他在執(zhí)行清理動(dòng)作的時(shí)候,是要根據(jù)你設(shè)置的最大cacheAge(NSDate*expirationDate = [NSDatedateWithTimeIntervalSinceNow:-self.maxCacheAge];)來判斷是否要來做清理的動(dòng)作的涩僻。而maxCacheAge是需要用戶自己設(shè)置修改栈顷,否則默認(rèn)就是1周(7*24*60*60)。正常一周之內(nèi)的圖片室抽,都不會(huì)被清理掉蛙卤。
所以可以通過設(shè)置maxCacheAge來實(shí)現(xiàn)最終的清理效果狠半。
兩個(gè)思路:
1.如果你的app本身不需要保存圖片很久,你可以直接設(shè)置maxCacheAge為你可接受的最小時(shí)間已维∫讶眨可以在appdelegate里口柳,在didFinishLaunchingWithOptions里直接設(shè)置
2.如果你不希望影響設(shè)置maxCacheAge,那我采取的辦法是丘逸,在用戶主動(dòng)要做 清理磁盤的動(dòng)作時(shí)唱较,設(shè)置maxCacheAge=0霉旗,然后在清理磁盤動(dòng)作結(jié)束后,在重新設(shè)置回來厌秒。
[SDImageCache sharedImageCache].maxCacheAge=0;
[[SDImageCache sharedImageCache]cleanDisk];
在它的cleanDisk里修改
- (void)cleanDisk {
[selfcleanDiskWithCompletionBlock:^{
self.maxCacheAge= 60 * 60 * 24 * 30;
}];
}
原來:
- (void)cleanDisk {
[selfcleanDiskWithCompletionBlock:nil];
}