2012-01-29 4 views
2

Я принимаю UIWebView в своем приложении. он выглядит как UIWebView кэширует изображения и данные. Я хочу очистить кеш при запуске приложения.UIWebView кэш в iOS

Очистка кеша Safari не помогает. единственный способ, который я обнаружил, чтобы очистить кеш UIWebView, - отключить мой iPhone и снова включить его. Закрытие приложения также не помогает.

В документации Apple ничего не говорится об этом ... или я что-то упускаю. На всякий случай, приложение создано с помощью моноточе.

ответ

1

Если вы хотите, чтобы уничтожить все кэшированные ответы, что-то вроде этого выглядит путь:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
+0

Не работает для меня. UIWebView по-прежнему загружает старое изображение для меня. –

+0

Не работает. Кэш остается. – Marsman

+0

Не работает на iOS 7. – Taylor

0

Существует вид кэш, который показывает растровое изображение последней страницы (например, мы видим внутри Safari), но это не похоже на то, что вы видите (так как для перезагрузки устройства требуется перезагрузка).

Я не заметил этого поведения раньше (никогда не искал его;), но следующее answer выглядит многообещающим.

FWIW Это не то, что было бы характерно для MonoTouch.

+0

спасибо! посмотрит на cachePolicy –

0

Ive пытался все предложения по переполнению стека и ни один из них не работает. Единственный способ заставить его работать и чувствовать, что его надежным решением является создание новых html-файлов в каталоге temp (с другим именем каталога - Guid работает лучше всего) каждый раз и копировать все связанные изображения, скрипты, css , каждый раз в этот каталог temp.

Затем откройте его с помощью объекта NSUrlRequest

string tempdir = Path.Combine(UIController.Common.DataFolder,System.Guid.NewGuid().ToString()); 
Directory.CreateDirectory (tempdir); 

//-- create your html on the tempdirectory here 
//-- copy all the images, and all the css, and js files 

UIWebView wv = new UIWebView(new RectangleF(30,30,480,680)); 
NSUrlRequest req = new NSUrlRequest(new NSUrl (Path.Combine (tempdir,"default.html"), false),NSUrlRequestCachePolicy.ReloadRevalidatingCacheData,10); 
wv.LoadFinished += delegate(object sender1, EventArgs e1) 
{ 
    //delete the tempdirectory 
    Directory.Delete(tempdir); 
};