2016-11-23 17 views
3

我需要釋放所有使用Kingfisher獲取的圖像佔用的內存。我有一個存儲大量圖像的UITableView,並具有加載更多功能。如何清除使用Kingfisherin UITableView加載的圖像的內存和磁盤緩存?

我試過這些措施。

In viewDidLoad()我設置了緩存大小。

let cache = KingfisherManager.sharedManager.cache 
cache.maxMemoryCost = 50 * 1024 * 1024 
// Set max disk cache to 50 mb. Default is no limit. 
cache.maxDiskCacheSize = 50 * 1024 * 1024 
// Set max disk cache to duration to 3 days, Default is 1 week. 
cache.maxCachePeriodInSecond = 60 * 60 * 24 * 3 

在viewWillDisappear()我清除這個。

cache.clearMemoryCache() 
// Clear disk cache. 
cache.clearDiskCache() 
// Clean expired or size exceeded disk cache. 
cache.cleanExpiredDiskCache() 

靜態內存沒有像預期的那樣獲得空閒。請糾正我,如果我失去了一些東西。

回答

3

在接收內存警告我清除緩存,它對於我來說,現在工作得很好:

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
    cache.clearMemoryCache() 
    cache.clearDiskCache() 
    cache.cleanExpiredDiskCache() 
} 
1

按照documentation

時收到內存警告

翠鳥將清除內存高速緩存,以及在需要時清理過期的和大小超出的緩存。通常不需要自己清理緩存。這些方法存在於您希望用戶對緩存有更多控制的情況下。