Frage

ich habe nicht wirklich wissen, wie man Titel diese Frage, aber hier ist eine Sache, die mich wirklich tötet: In meiner Anwendung habe ich eine UITableView, UISegmentedControl und UINavigationBar. Sobald UISegmentedControl einen seiner Segmente ausgewählt wird ich möchte einen UIActivityIndicatorView auf dem UINavigationBar zeigen und dann eine XML-Datei zu analysieren und die Ergebnisse in einer Tabelle darstellen. Alles funktioniert fast wie ich es haben wollen, bis auf eine Sache, die Aktivitätsanzeige im Hinblick auf die UINavigationBar nach den Parser beendet hinzugefügt wird, obwohl die Methode showLoading die UIIndicatorView zu UINavigationBar fügt wird, bevor Parser initialisiert wird. Kann mir jemand erklären? i gibt es etwas fehlen könnte? vielleicht braucht die ui neu gezeichnet zu bekommen? Vielen Dank Peter

War es hilfreich?

Lösung

Es sieht aus, dass Sie Ihre xml in Haupt-Thread analysieren und so wird es für Änderungen an der Benutzeroberfläche blockiert. Versuchen Sie xml zu bewegen Parsen Thread zu trennen (zum Beispiel durch Ihre Analyseverfahren über -performSelectorInBackground: Aufruf)

Edit: Eigentlich bist du (fast sicher) autorelease implizit in Ihrer Anwendung mit - so viele Standardfunktionen Autoreleased Objekte zurück. Wenn Sie Ihre Funktionen auf separaten Thread ausgeführt werden müssen Sie NSAutoreleasePool Objekt dort zu schaffen, um Autoreleased Objekte zu verarbeiten und Speicherlecks zu vermeiden (siehe Autorelease Pools in docs). So Ihre parseXML Funktion muss wie folgt aussehen:

- (void)parseXML{
   NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
   ... //xml parsing routines etc
   [pool release];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top