2010-05-28 1 views
0

У меня есть UITableView, который показывает некоторую информацию. Информация из XMLFile. Xmlfile довольно большой, около 500 записей.UITableView: нужен liveUpdate (Огромное количество ячеек)

Я не хочу, чтобы пользователь должен был дождаться завершения разбора, я хочу добавить ячейку по ячейке в TableView.

Вот мой код:

-(void) onFinishedPartDownload:(id)item 
{ 
    if(odvTableViewDelegateController.odvs == nil) 
     odvTableViewDelegateController.odvs = [NSMutableArray new]; 

    if([odvTableViewDelegateController.odvs count]==0) 
    { 
     genericDelegate.tableView.delegate = odvTableViewDelegateController; 
     genericDelegate.tableView.dataSource = odvTableViewDelegateController; 
    } 

    [odvTableViewDelegateController.odvs addObject:item]; 

    [genericDelegate.tableView reloadData]; 
} 

Этот метод вызывается каждый раз, когда элемент был проанализирован, но перезагружает Tableview все сразу в конце. У меня нет ожидаемого liveUpdate, который я ищу.

Интервал, который называется методом, составляет от 0,001 до 0,0025 секунды.

Любые идеи исправить это?

Sebastian

ответ

1

Казалось бы, XML синтаксический происходит в основном потоке. Вероятно, парсер имеет полный контроль над потоком и не откажется от него до тех пор, пока синтаксический анализ не будет завершен. Именно в это время пользовательский интерфейс будет иметь возможность обновить UITableView, поэтому вы видите, что все происходит в самом конце. Моя рекомендация (если у вас еще не реализованы такие вещи) будет выполнять синтаксический анализ XML в потоке, оставляя основной поток для обновлений пользовательского интерфейса и другого взаимодействия с пользователем.

+0

Да, разбор и добавление находятся в одной и той же цепочке (основной поток). Я попытаюсь разделить синтаксический анализ на дополнительный поток в понедельник. – 2010-05-28 18:32:23

+0

Хорошо, я не мог удержаться и попробовал тебя. Он отлично работает =) Большое вам спасибо! – 2010-05-28 19:06:08

Смежные вопросы