Qualsiasi problema relativo alle prestazioni di scorrimento UITableView
può essere risolto utilizzando tecniche già descritte in altre risposte. Tuttavia, molte volte le prestazioni lente sono causate da qualcosa di intrinsecamente errato o ripetitivo.
Il fatto che il UITableView
riutilizza le celle e il fatto che ogni cella abbia bisogno della propria immagine - insieme rende il bit della soluzione complesso. Da come viene risolto il problema generale, qui riepiloghiamo le cose che dovrebbero essere risolte:
- Caricare i dati nell'origine dati - da REST/database. Questo passaggio dovrebbe essere eseguito sullo sfondo, eventualmente utilizzando dispatch_async insieme alla coda GCD.
- creare e inizializzare pertinenti oggetti del modello dei dati che si infila un array
[tableView reloaddata]
- All'interno
cellForRowAtIndexPath
, includono codice che imposterà dati (testo) da oggetto corretto modello di dati dell'array.
- Ora anche le immagini possono essere sotto forma di URL, quindi questo passaggio potrebbe essere poco eccentrico a causa del riutilizzo delle celle effettuato dalla visualizzazione tabella. Il nocciolo del fatto è caricare nuovamente un'immagine dalla cache/URL del dispositivo utilizzando la coda asincrona, quindi impostarla per correggere cell.image (qualunque sia la proprietà dell'immagine della cella).
Per evitare problemi, fare riferimento a questo tutorial su lazy loading of images nella vista tabella.
fonte
2016-01-16 13:23:23
Se è necessario memorizzare nella cache le altezze delle celle (che possono essere costose da calcolare e vengono anche utilizzate di frequente), ho fornito un esempio. Usalo solo se è adatto alla tua applicazione. http://stackoverflow.com/questions/1371223/how-do-i-cache-something-for-aperview/10992748#10992748 –