Come dire ad un UITableView a precaricare tutte le righe?
-
05-10-2019 - |
Domanda
C'è un modo per dire un UITableView a precaricare tutte le righe?
Il tableView dovrebbe mostrare diversi commenti (fino a 80 commenti).
Quindi il mio CommentCell utilizza un Setter per adattare il cellulare ad un commento specifico.
-(void)setComment:(Comment *)newComment {
if (newComment != comment) {
[comment release];
comment = [newComment retain];
/*
* set the cells view variables here
*/
}
}
Questa setter specifica richiede un bel po 'di lavorazione delle risorse e lo scorrimento diventa un po lag.
Sto usando un commento specifico reuseIdentifier invece di un cellIdentifier statica quando si chiama
dequeueReusableCellWithIdentifier:
al fine di assicurare, che "newComment" è uguale al vecchio "commento".
E in effetti questo fa grande lavoro durante lo scorrimento su cellule che sono già stati caricati.
Ma quando scorrendo i commenti per la prima volta, si ritarda ancora come l'inferno.
Il che mi porta alla mia domanda:
C'è un modo per dire al Tableview per precaricare tutte le cellule? (Cosa di cui dubito)
o
Devo implementare la mia cache invece di basarsi su "dequeueReusableCellWithIdentifier:"?
Soluzione
Tenete a mente che il vostro specifico reuseIdentifier commento potrebbe essere che cosa sta causando tutto per andare lento (o almeno, non sta aiutando). La ragione per cui usiamo reuseIdentifier per UITableViewCells è perché se si tenta di allocare una nuova cella ogni volta che avete bisogno di uno che non è così performante come se si può semplicemente riutilizzare quello che è stato già fatto.
Mi raccomando pre-computing tuoi commenti così puoi semplicemente impostare le proprietà delle vostre cellule e cellule riutilizzo dopo che scorrono fuori dal Tableview.
Altri suggerimenti
No, è necessario precaricare i dati nel vostro dataSource
. Basta mettere tutto il necessario in un array e riempire le celle della tabella da quella matrice di oggetti precaricati.