Ich arbeite an einer iPhone App, die eine ziemlich große UITableView mit Daten aus dem Internet hat, so versuche ich, seine Erstellung und Nutzung zu optimieren.iPhone - dequeueReusableCellWithIdentifier Verwendung
Ich fand heraus, dass dequeueReusableCellWithIdentifier ziemlich nützlich ist, aber nachdem ich viele Quellcodes mit diesem gesehen habe, frage ich mich, ob die Verwendung, die ich von dieser Funktion mache, die gute ist. Hier
ist, was die Menschen in der Regel tun:
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"];
// Add elements to the cell
return cell;
Und hier ist die Art, wie ich es tat:
// The cell row
NSString identifier = [NSString stringWithFormat:@"Cell %d", indexPath.row];
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell != nil)
return cell;
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:identifier];
// Add elements to the cell
return cell;
Der Unterschied besteht darin, dass die Menschen die gleiche Kennung für jede Zelle zu verwenden, so ein Ausreihen vermeidet nur, eine neue zuzuweisen.
Für mich bestand der Zweck der Warteschlangen darin, jeder Zelle eine eindeutige Kennung zu geben. Wenn die App also nach einer bereits angezeigten Zelle fragt, müssen weder Zuweisungen noch Elemente hinzugefügt werden.
In Ordnung Ich weiß nicht, welche die beste ist, die "gemeinsame" Methode deckt die Speicherbelegung der Tabelle mit der genauen Anzahl der Zellen, die es anzeigt, scheint die Methode, die Geschwindigkeit zu bevorzugen scheint, da es alle berechnet Zellen, kann aber einen großen Speicherverbrauch verursachen (es sei denn, es gibt eine innere Grenze für die Warteschlange).
Bin ich falsch, es auf diese Weise zu verwenden? Oder liegt es nur an den Entwicklern, abhängig von seinen Bedürfnissen?
Sie haben recht mit der Tatsache, dass mit meiner Methode ein Array die Arbeit machen könnte. Würden ~ 100 Zellen eine zu große Menge an Speicher auf einmal bereitstellen? – Jukurrpa
Nun, ich änderte für die allgemeine Methode (was kompliziert ist, wenn eine Zeile viele Unteransichten hat), und neben dem geringeren Speicherverbrauch scheint Scrollen insgesamt glatter, ich bin mir nicht sicher warum. Danke für den Hinweis sowieso! – Jukurrpa
@progrmr ... danke ... für die Klärung des Konzepts .. es ist wirklich nett ... Ich habe auch den gleichen Fehler gemacht .. :) –