uiwebview und große Speicher Verlust
Ich habe ein problem mit UIWebViews, die ich gesehen habe die gleiche Frage hier, aber es war keine hilfreiche Antwort. die Frage ist hier: UIWebView memory management . Ich zitiere es:
Ich entwickle eine Anwendung, die macht der starken Nutzung von UIWebView. Diese app generiert dynamisch viele UIWebViews beim laden der Inhalte von meinem server. Einige dieser UIWebViews sind Recht groß und haben eine Menge Bilder.
Wenn ich Instrumente zum erkennen von Leckagen, der ich nicht erkennen. Aber viele Objekte zugeordnet und ich vermute das hat zu tun mit der UIWebViews.
Wenn die webviews release, da nicht mehr benötigt, scheint es, dass nicht aller Speicher freigegeben wird. Ich meine, nachdem ich eine Anfrage auf meinem server die app erstellt einen UITableView und viele webviews (Instrumente sagen über 8Mb). Wenn der Benutzer Tippen Sie auf zurück, alle von Ihnen sind veröffentlicht, aber die Speicherauslastung nur dekrementiert etwa 2-3 Mb, und nach 5-10 Minuten mit der app stürzt es ab.
Den ich erstellt habe einfach test-app und haben die gleichen Ergebnisse.
Es ist ein tableView, ich bin momentan dabei, DetailsView, wie diese:
DetailsVC *detailViewController = [[DetailsVC alloc] initWithNibName:@"DetailsVC" bundle:nil];
detailViewController.n = indexPath.row;
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
in DetailsVC ich habe eine webView erstellt in IB. Lade ich html so:
NSString *urlAddress;
if (self.n == 0)
{
urlAddress = @"http://www.google.com";
}
else
{
urlAddress = @"http://www.yahoo.com";
}
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:requestObj];
Ich auch tun:
- (void)viewDidUnload {
self.webView = nil;
}
Ist es, jedes mal, wenn ich wählen Sie alle webView in RootViewController ich bin zu verlieren 2-3 Mb Arbeitsspeicher, gibt es eine Lösung für dieses problem?
Dank.
- wie es scheint, sehr altes und gut bekanntes problem, die Menschen laufen in die es seit 2008 und immer noch keine Lösung(((( discussions.info.apple.com/thread.jspa?threadID=1729697
- Ok, ich fand eine Idee, wie dieses Problem zu umgehen, ist es hier beschrieben:iphonedevsdk.com/forum/iphone-sdk-development/... . Es nicht nicht eine Lösung für ein problem, sondern eine Art hack ist. Ich kann nicht glauben, dass es der einzige Weg, es zu tun, alle anderen Gedanken? Dank
- mögliche Duplikate von Tut UIWebView ein Speicherleck?
- Siehe auch ist es möglich, um Speicher frei von UIWebView?
- Ok, danke, aber es gibt keine Lösung gibt(
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur überprüfen Sie die folgenden
1. Ist u ein webview als Eigenschaft entfernen
2. Und den folgenden code in
didFinishLaunchingWithOptions
imAppdelegate
Ich denke, dann ist das ur-problem ist gelöst
Ich denke, die seit Sie eingestellt webview=null, verlieren Sie jede chance, es zu veröffentlichen.
Ich weiß, dieser thread ist ein bisschen alt, aber nur für eine Idee, und fügen Sie einige mehr relevanten bits hinzufügen möchte ich, dass diese Tipps so dass die künftigen Besucher können einen Blick auf diese als gut, und es problem könnte gelöst werden.
Sollten Sie
set Cache policy
zu IhremNSURLRequest
- Objekt und überprüfen Sie die Richtlinien, die ignorieren cache-Daten finden Sie in der Dokumentation.Da haben Sie einen Aufruf
release
im code ich nehme an, Sie sind mit ARC, also warum Sie nicht nennen[super dealloc]
in viewDidUnload()?Haben Sie einen Blick auf diesen thread, wie cleanForDealloc mit UIWebView.
Ist es ein UITableViewController ? mit einem benutzerdefinierten Zellen ? Versuchen Sie, freigeben (release, removeFromSuperView, set nil) Sie als gut.
Hoffe, es hilft!