/ / Nezodpovedajúca UITableView pri viacvláknových - ios, objektív-c, multithreading, výkon, uitableview

Nezodpovedajúca UITableView pri viacvláknových - ios, objektív-c, multithreading, výkon, uitableview

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ď č. 1

Zvyč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.