Wie teuer ist eine UITableView ist reloadData?
Bin ich mal gespannt, wie teuer in wie weit die Ressourcen gehen ist UITableView ist reloadData? Ich habe eine app, die machen etwa 10 nachfolgende HTTP-Anforderungen, und wie Sie es bekommt Daten /preps, lädt es die tableView. Da die Datenmenge größer und größer, es ist immer sehr träge. Ich versuche herauszufinden, ob es ist, weil die Menge der Zeiten ich bin Neuladen der tableView oder weil, wie ich bin-grabbing/Parsen der Daten.
Was ist die beste Vorgehensweise in diesem Fall?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist die beste Methode, um Ihre Umsetzung
cellForRowAtIndexPath:
tun so wenig Arbeit wie möglich. In der Tat, Sie wirklich nicht tun sollten jede Arbeit, außer dem Auffüllen derUITableViewCell
Instanz mit den Daten, die es anzeigen muss.Sollten Sie mithilfe von zwischengespeicherten
UITableViewCell
s, so dass Sie nicht haben, reservieren Sie eine neue Zelle, jedes mal. Wenn Sie tun können, Ihre Analyse und so in einem separaten thread und machen den analysierten Daten, bereit, vorhanden, zugänglichcellForRowAtIndexPath:
Sie sollte keine performance Probleme.Du nicht sagen, wenn Sie wurden mithilfe einer benutzerdefinierten
UITableViewCell
Unterklasse, aber wenn Sie sind, tief view-Hierarchien können auch ein performance-problem, da jede Ansicht in der Hierarchie bekommt gezeichnet. Je flacher Sie könnenUITableViewCell
s, desto besser.Hoffe, dass bringt Sie in die richtige Richtung bewegen.
Aus Der UITableView.h:
"Das ist Billig."
Umsetzung Ihrer Tabelle anzuzeigen Methoden gut und es wird keine große Sache sein, um diese Funktion aufrufen, die ganze Zeit.
On a side note, sollten Sie versuchen, verwenden Sie die entsprechenden Methoden zu animieren, hinzufügen und entfernen von Zeilen, wenn Sie denken mit reloadData für, die.
Beste, was zu tun ist das Profil der app, um zu sehen, wo es langsam ist.
Sagte, dass, wenn Ihre Zellen der Tabelle sind alle die gleiche Höhe, dann denke ich,
nur anrufen
Zellen auf dem Bildschirm sichtbar.
Tabellenansicht laden Kosten wird:
Zeilen pro Abschnitte, die Sie haben
Zeilenhöhen sind insbesondere herausgefunden, für alle Elemente der Tabelle, die Sie jederzeit aufrufen, Daten zurückladen.
Den übrigen Kosten ist cellForRowAtIndexPath, die in der Regel nicht so schlimm, weil es nur heißt, für so viele Zeilen, wie auf dem Bildschirm. Es kann schlecht sein, beim scrollen, wenn Sie nicht die Wiederverwendung von Zellen, wie Sie sollen.
Den Schlüssel für Sie ist wahrscheinlich, sich zu Fragen, was löst den HTML-Last und möglicherweise verschieben, die in einem hintergrund-thread.
Boot Auf Dem Kopf ist richtig.
Bin ich dabei ein progressive ein-von-ein Artikel Aktualisierung der Liste in Instapaper, und ich nenne -reloadData auf jedem abgeschlossenen download. Klingt ähnlich zu dem, was du tust. Führen Sie nicht irgendwelche spürbaren performance-slowdowns.