當收到內存警告時清除共享NSURLCache
是否是一種好習慣?類似這樣的:清除內存中的URL緩存警告在iOS中
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
[[NSURLCache sharedURLCache] removeAllCachedResponses];
}
我正確地認爲這也會不必要地清除磁盤緩存嗎?
如果是這樣,有可能只清除內存緩存?
當收到內存警告時清除共享NSURLCache
是否是一種好習慣?類似這樣的:清除內存中的URL緩存警告在iOS中
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
[[NSURLCache sharedURLCache] removeAllCachedResponses];
}
我正確地認爲這也會不必要地清除磁盤緩存嗎?
如果是這樣,有可能只清除內存緩存?
當出現內存警告時,您只需清除內存緩存而不是磁盤緩存。 removeAllCachedResponses
的問題是它將清除兩者。從我的測試中,這似乎清楚了內存緩存。
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
NSURLCache * const urlCache = [NSURLCache sharedURLCache];
const NSUInteger memoryCapacity = urlCache.memoryCapacity;
urlCache.memoryCapacity = 0;
urlCache.memoryCapacity = memoryCapacity;
}
我唯一關心的是線程問題。 this文章底部有一個腳註。
有StackOverflow上很多的建議,關於通過重新創建它淨化NSURLCache,然而,我們當請求,同時緩存正在重建另一個線程上發生見過這導致偶爾的崩潰。因此,我們的建議是在應用程序啓動時創建一次緩存,並在適當時清除緩存。
上述解決方案不會重新創建緩存,但它可能仍然存在同樣的問題,我沒有廣泛地測試過。
有趣。謝謝@Robert! – hpique
'URLCache.shared.currentMemoryUsage'在您的代碼提供相同的值之前和之後,因此將'memoryCapacity'設置爲'0'似乎不起作用。另一方面,在'URLCache.shared.removeAllCachedResponses()'後,'currentMemoryUsage'設置爲'0' – rafalkitta
我不這麼認爲,你應該清除圖像緩存。 –
@RajanBalana如何清除圖像緩存? – zt9788
@ zt9788你找到了清除圖像緩存的方法嗎? –