2016-11-23 3 views
3

Мне нужно освободить всю память, занятую изображениями, полученными с помощью Kingfisher. У меня есть UITableView, который хранит много изображений и имеет функцию Load More.Как очистить память и кеш диска для изображений, загруженных с помощью Kingfisherin UITableView?

Я пробовал эти меры.

В 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 

In 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:

Kingfisher очистит кэш-памяти, когда получил предупреждение памяти, а также очистить истекший и размер превысил кеш при необходимости. Обычно нет необходимости очищать кеш. Эти методы существуют в случае, если вы хотите, чтобы ваши пользователи больше контролировали кеш.

 Смежные вопросы

  • Нет связанных вопросов^_^