Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
UITableViewCell: Wiederverwendung erwünscht

Eine weitere clevere Programmierung, die von Xcode vorbereitet wird, findet sich noch in der tableView:cellForRowAtIndexPath-Methode. Durch die Verwendung eines CellIdentifier und dem Parameter reuseIdentifier ist es möglich, Tabellenzellen erneut zu verwenden, anstatt immer wieder neue Objekte zu erzeugen. Diese Funktionalität tritt dann in Aktion, wenn Tabellenzellen aus dem Bildschirm heraus bewegt werden, gleichzeitig aber am anderen Ende der Anzeige neue Objekt in das Bild kommen: das typische Scrollen eines UITableView mit vielen Zellen.
Eine Tabelle mit sehr vielen Objekten benötigt normalerweise für jeden Eintrag eine separate Zelle. Da der begrenzte Platz auf dem Display der iOS-Geräte aber nur eine geringe Anzahl von Objekten gleichzeitig darstellen kann, ist es viel sinnvoller, nur Zellen für die sichtbaren Objekte zu erzeugen. Wird ein Objekt aus dem Bild bewegt und wird gleichzeitig eine neues Objekt in die Anzeige bewegt, muss die UITableViewCell nicht zwangsläufig komplett neu erstellt werden. Eine nicht mehr sichtbare Zelle kann für diese Aufgabe wiederverwendet werden.
Wie der folgende Code sehr anschaulich zeigt, wird nur dann mit alloc und init eine neue Zelle erstellt, wenn die zuvor ausgeführte Methode dequeueResuableCellWithIdentifier keine existierende Zelle ermitteln konnte und der Objektverweis daher nil ist.
static NSString *CellIdentifier = @"Cell";
   
UITableViewCell *cell = [tableView
     dequeueReusableCellWithIdentifier:CellIdentifier];
   
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc]
        initWithStyle:UITableViewCellStyleSubtitle
        reuseIdentifier:CellIdentifier] autorelease];
    }