NSOperationQueue блокирует обновление таблицы

Я использую NSOperationQueue для загрузки некоторых данных с сервера в фоновом режиме. у меня есть несколько данных для загрузки. Таким образом, в очередь для каждой загрузки данных добавляется несколько операций UITableview, которые мне нужно обновить после получения отдельных данных. Я использовал подход KVO для отслеживания ключа «isFinished» для завершения каждой операции. Но когда я обновляю tableview, вызываются все delgates для tableview, но таблица не обновляется. я также вижу из своих журналов консоли, что даже когда табличное представление не обновляется полностью, я вижу журналы из рабочего потока (используется для фоновой загрузки данных). Так вот почему моя таблица не обновляется полностью? Что может быть обходным путем для этого?


person Ritika    schedule 04.11.2011    source источник


Ответы (1)


Было бы неплохо увидеть код, но одной из возможных причин может быть то, что вы запускаете reloadData из фоновой очереди.

Попробуй это:

dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });
person Andrei G.    schedule 16.07.2012
comment
там, где многие операции добавляются в очередь, поэтому операция, в которой завершается очень быстро, и поэтому табличное представление перезагружается много раз, и один вызов перекрывается другим. Я нашел обходной путь, сделав перезагрузку таблицы один раз для партии, скажем, когда 100 операций завершены. Тогда табличное представление кажется обновленным правильно - person Ritika; 01.08.2012