Il profiler orario mostra l'operazione che richiede più tempo nella mia app sta caricando UITableViewCells
dai file pennino. Il più costoso dei quali prevede il caricamento di un UITableViewCell
con un'immagine 4KB.È più veloce creare UITableViewCell a livello di codice o caricarne uno da un pennino?
sto caricando il UITableViewCell
dal pennino con il seguente codice:
[[NSBundle mainBundle] loadNibNamed:@"UITableViewCellPortrait" owner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
Qualcuno ha paragonato la differenza tra la creazione di una vista a livello di codice o il caricamento di un UITableViewCell
da un pennino?
MODIFICA:
Ho confrontato il profilo temporale delle ripetute corse di caricamento del UITableViewCell
da un pennino e la creazione della vista a livello di programmazione. Il mio test ha coinvolto alternativamente tra due UITableViews
circa 10 volte nell'arco di 3-5 secondi. In ciascun test, il caricamento dello UITableViewCell
a livello di codice era sostanzialmente più veloce, da 2 a 6 volte più veloce.
Qualcuno può confermare questi risultati?
EDIT: Ho aggiornato il codice di nasello di carico per caricare solo il file pennino in una volta e utilizza una versione in cache per le chiamate successive.
if (self.UITableViewPortaitNib == nil) {
self.UITableViewPortaitNib = [UINib nibWithNibName:@"UITableViewCellPortrait" bundle:[NSBundle mainBundle]];
}
self.UITableViewPortaitNib instantiateWithOwner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
Ho anche utilizzato lo strumento di automazione per creare piste più coerenti ed i risultati suggeriscono ancora carico UITableViewCells
di programmazione è più veloce di caricare UITableViewCells
per un pennino. Il tempo medio di esecuzione del caricamento di UITableViewCells
da un pennino era di circa 90 ms, mentre la durata media della creazione di UITableViewCell
a livello di programmazione era di 50 ms.
Mostraci il codice di caricamento del pennino. –
Grazie per dare un'occhiata @robmayoff. Ho aggiornato la domanda per includere il mio codice per caricare il pennino. – Eytan
Scoperta interessante: potresti eseguire nuovamente l'esperimento utilizzando storyboard e celle prototipo, in cui la vista tabella esegue il caricamento di tutto il pennino in background? – jrturton