Ho una funzione che si connette a Internet e quindi aggiorna le celle nella tabella.UITableView reloadData è lento
La mia funzione è:
- (void) updateMethod
{
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.name = @"Data request queue";
[queue addOperationWithBlock:^{
//neither of these delay the responsiveness of the table
[columnArrayBackground removeAllObjects];
[self getColumnDataBackground];
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
for (int i=0; i < 6; i++) {
columnArray[i] = columnArrayBackground[i];
};
//THIS ONE LINE CAUSES DELAYS
[homeTable reloadData];
}];
}];
}
Tutto è super veloce ad eccezione di [homeTable reloadData]. Quando lo commento, ho una risposta rapida. Quando lo disapprovo, la mia risposta cellulare è a volte di qualche secondo!
Le mie altre chiamate reloadData non ritardano la mia app. Non sto implementando correttamente NSOperationQueue?
puoi provare a ricaricare solo le celle visibili? Se l'origine dati è stata aggiornata prima che l'utente scorresse verso il basso, potrebbe essere più veloce, ad esempio [homeTable reloadRowsAtIndexPaths: [homeTable indexPathsForVisibleRows]] – Max
Mostra i metodi di delega della vista tabella. Cosa fa 'getColumnDataBackground'? Come sai che sta causando un "ritardo"? – Wain