Mam funkcję, która łączy się z Internetem, a następnie odświeża komórki w tabeli.UITableView reloadData jest powolny
Moja funkcja to:
- (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];
}];
}];
}
Wszystko jest super szybki wyjątkiem [homeTable reloadData]. Kiedy to skomentuję, mam szybką odpowiedź. Kiedy odkomentuję to, odpowiedź mojej komórki może być opóźniona o kilka sekund!
Moje inne połączenia resloadData nie opóźniają mojej aplikacji. Czy nie wdrażam poprawnie NSOperationQueue?
Czy możesz spróbować załadować tylko widoczne komórki? Jeśli twoje źródło danych zostało zaktualizowane, zanim użytkownik przewinie w dół, może być szybsze, np. [HomeTable reloadRowsAtIndexPaths: [homeTable indexPathsForVisibleRows]] – Max
Pokaż metody delegatów widoku tabeli. Do czego służy 'getColumnDataBackground'? Skąd wiadomo, że powoduje "opóźnienie"? – Wain