[[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];

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容