2016-11-09 6 views
3

Я попытался очистить кеш-бит, размер приложения не станет значительно меньше.Изображения не удаляются с диска после очистки кеша AFNetworking

Размер моего приложения составляет около 30 МБ плюс 45 МБ для кешированных изображений.

Это, как я попытался очистить кэш:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
[[AFImageDownloader defaultURLCache] removeAllCachedResponses]; 
AFAutoPurgingImageCache *imageCache = [AFImageDownloader defaultInstance].imageCache; 
[imageCache removeAllImages];    
  • На моем iPhone 6 iOS10 размер приложения не становится меньше.
  • On Simulator внутри приложения файлов com.alamofire.imagedownloader/fsCachedData все файлы все еще там

Это как загрузить изображения с помощью AFNetworking (3.1.0):

#import "AFImageDownloader.h" 

[photoImageView setImageWithURLRequest:[NSURLRequest requestWithURL:thumb] placeholderImage:myCachedImage success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
       [self setPhotoImage:image]; 
      } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 
       [self setupPlaceholder]; 
      }]; 
+0

я обнаружил, что кэширование не всегда работает в тренажере, попробуйте реальное устройство. –

ответ

1

См следующим образом:

  1. AFAutoPurgingImageCache *imageCache = [AFImageDownloader defaultInstance].imageCache;imageCache хранится в памяти, бесполезно делать [imageCache removeAllImages];
  2. Вам просто нужно сделать [[AFImageDownloader defaultURLCache] removeAllCachedResponses];. Это единственный API, который Apple предлагает очистить URLCache.
  3. Вы найдете, что fsCachedData не удаляется, когда вы звоните removeAllCachedResponses. Это связано с тем, что у яблока есть свой собственный механизм для очистки данных диска. Возможно, он очистит данные на диске каждые 7 дней, когда я обыскаю, но я не могу убедиться.
  4. Я думаю, что интересно посмотреть, как другие используют fsCachedData. Should I clear the fsCachedData folder myself?
  5. Я надеюсь, что это поможет u.
1

Мы видим это в одном из наших приложений. Согласно этому http://blog.airsource.co.uk/2014/10/11/nsurlcache-ios8-broken/, его ошибка iOS 8, которую Apple исправила в обновлении iOS 8.1 сегодня.

Итак, чтобы ответить на ваш вопрос: Нет, вам не нужно будет удалять кеш себе и, если повезет, исправление Apple действительно очистит старые данные. Если по какой-то причине нет, вы можете удалить его самостоятельно без каких-либо проблем.

Я проверял, что iOS 8.1 действительно исправляет проблему. Пользователь должен запустить приложение один раз после обновления для очищаемого кеша.

+0

Почему вы говорите об iOS 8 и ссылаетесь на блогпост с 2014 года? Сейчас 2016 год, и большинство людей используют iOS 10. Я испытываю ту же проблему, что и исходный плакат, но я сомневаюсь, что это связано с ошибкой в ​​iOS 8 (которая была исправлена ​​в iOS8.1). – knutigro

0

Этот код работает для AFNetworking 3,1:

 [[NSURLCache sharedURLCache] removeAllCachedResponses]; 

     AFImageDownloader *imageDownloader = [AFImageDownloader defaultInstance]; 
     NSURLCache *urlCache = imageDownloader.sessionManager.session.configuration.URLCache; 
     [urlCache removeAllCachedResponses]; 

     [imageDownloader.imageCache removeAllImages];