Sie können auch @ "about: blank" laden, nachdem das Webview ausgeblendet wurde, dann ist es beim nächsten Zugriff leer.
Jedes Mal, wenn ich eine neue Seite mit UIWebView
lade, wird die vorher geladene Seite für eine kurze Zeit angezeigt.
Wie kann ich diesen Cache löschen? Eine andere Möglichkeit wäre, UIWebview
aufzuheben. Ich habe das probiert, aber mein UIWebView
ist immer "leer". Wie sollten die alloc
und dealloc
in diesem Fall gemacht werden?
Ich habe bemerkt, dass die UIWebView
ungefähr 10 MB RAM verbraucht. Jetzt wird UIWebView
zusammen mit ViewController
geladen. Und die Ansicht ist Autoreleased sowie die UIWebView
ist Autoreleased. Wäre es nicht besser, das WebView jedes Mal freizugeben?
Lösung:
%Vor% Meine Lösung für dieses Problem bestand darin, das UIWebView
programmgesteuert auf viewWillAppear:
zu erstellen und es auf viewDidDisappear:
wie folgt freizugeben:
Wenn Sie dies tun und Ihr UIWebView
nicht freigegeben wird, sollten Sie überprüfen, ob es sich lohnt, zu zählen und zu verstehen, wer es behält.
Ich hatte fast das gleiche Problem. Ich wollte, dass der Webview-Cache gelöscht wird, denn jedes Mal, wenn ich eine lokale Webseite in einem UIWebView
neu lade, wird der alte angezeigt. Also habe ich eine Lösung gefunden, indem ich einfach die Eigenschaft cachePolicy
der Anfrage gesetzt habe. Verwenden Sie NSMutableURLRequest
, um diese Eigenschaft festzulegen. Bei allem funktioniert alles gut mit dem Nachladen der UIWebView
.
Hoffe das hilft!
Wenn Sie alle zwischengespeicherten Antworten entfernen möchten, sollten Sie auch Folgendes versuchen:
%Vor%Wenn ich raten musste, ist Ihre Eigenschaft für webView
%Vor%Korrekt? Der wichtige Teil ist der behalten.
%Vor%Der obige Code ordnet ein UIWebView (also retainCount = 1) zu und fügt es dann zu self.webView hinzu, wo es erneut gespeichert wird (retainCount = 2).
Ändern Sie den Code wie folgt, und Ihr WebView sollte freigegeben werden.
%Vor%addSubview: kann nur auf UIViews aufgerufen werden.
%Vor%sollte
sein %Vor%Ich habe etwas einfacheres getan, ich habe nur% web_des_% auf 0 auf loadRequest und 1 auf webViewDidFinishLoad gesetzt.
%Vor%und
%Vor%(Eigentlich habe ich eine Einblendung, da das Rendern zB einer PDF etwa 1/5 Sekunden dauern kann.)
Ich hatte fast das gleiche Problem. Ich wollte, dass der Webview-Cache gelöscht wird, denn jedes Mal, wenn ich eine lokale Webseite in einem %code% neu lade, wird der alte angezeigt. Also habe ich eine Lösung gefunden, indem ich einfach die Eigenschaft %code% der Anfrage gesetzt habe. Verwenden Sie %code% , um diese Eigenschaft festzulegen. Bei allem funktioniert alles gut mit dem Nachladen der %code% .
%Vor%Hoffe das hilft!
Wenn ich raten musste, ist Ihre Eigenschaft für webView
%Vor%Korrekt? Der wichtige Teil ist der behalten.
%Vor%Der obige Code ordnet ein UIWebView (also retainCount = 1) zu und fügt es dann zu self.webView hinzu, wo es erneut gespeichert wird (retainCount = 2).
Ändern Sie den Code wie folgt, und Ihr WebView sollte freigegeben werden.
%Vor%addSubview: kann nur auf UIViews aufgerufen werden.
%Vor%sollte
sein %Vor%Ich habe etwas einfacheres getan, ich habe nur% web_des_% auf 0 auf loadRequest und 1 auf webViewDidFinishLoad gesetzt.
%Vor%und
%Vor%(Eigentlich habe ich eine Einblendung, da das Rendern zB einer PDF etwa 1/5 Sekunden dauern kann.)
Sie können auch @ "about: blank" laden, nachdem das Webview ausgeblendet wurde, dann ist es beim nächsten Zugriff leer.
Wenn Sie alle zwischengespeicherten Antworten entfernen möchten, sollten Sie auch Folgendes versuchen:
%Vor%Meine Lösung für dieses Problem bestand darin, das %code% programmgesteuert auf %code% zu erstellen und es auf %code% wie folgt freizugeben:
%Vor%Wenn Sie dies tun und Ihr %code% nicht freigegeben wird, sollten Sie überprüfen, ob es sich lohnt, zu zählen und zu verstehen, wer es behält.
Jedes Mal, wenn ich eine neue Seite mit %code% lade, wird die vorher geladene Seite für eine kurze Zeit angezeigt.
Wie kann ich diesen Cache löschen? Eine andere Möglichkeit wäre, %code% aufzuheben. Ich habe das probiert, aber mein %code% ist immer "leer". Wie sollten die %code% und %code% in diesem Fall gemacht werden?
Ich habe bemerkt, dass die %code% ungefähr 10 MB RAM verbraucht. Jetzt wird %code% zusammen mit %code% geladen. Und die Ansicht ist Autoreleased sowie die %code% ist Autoreleased. Wäre es nicht besser, das WebView jedes Mal freizugeben?
Lösung:
%Vor%Tags und Links objective-c iphone cocoa-touch uiwebview