Používam funkciu UITableView, aby som implementoval niečo ako výstup konzoly. Nikdy nevolal reloadData, len posledné riadky vložiťRowsAtIndexPaths a reloadRowsAtIndexPaths.
Môj problém je, že aplikácia sa staneúplne nereaguje, keď stôl rastie za 100 riadkov. Moja aplikácia spája veľa dát je menej ako min. Počas tejto doby sa aktualizácia UITableView aktualizuje s menej ako snímok za sekundu.
void Log(const char* str)
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^
{
// insertRowsAtIndexPaths or reloadRowsAtIndexPaths (both withRowAnimation:UITableViewRowAnimationNone)
}
}
Ak je dôležité, môj stôl je vytvorený v kóde:
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
cell.textLabel.font = [UIFont fontWithName:@"Courier New" size:8];
}
a ja používam pevný rowHeight.
odpovede:
3 pre odpoveď č. 1Zvyčajne je efektívnejšie aktualizovať základné údaje na samostatnom vlákne v dávke a hovor pravidelne [tableView reloadData]
na hlavnom vlákne (po definovanom počte aktualizácií alebo času).
Ak máte príliš veľa aktualizácií, je zlé, aby sa výkon vždy prepínal medzi hlavným a sekundárnym vláknom.