отставание UIRefreshControl

Я разработал RSS-канал с UIRefreshControl, чтобы обновить содержимое. Но всякий раз, когда я запускаю UIRfreshControl, он ужасно отстает. Нет задержки, если я использую Wi-Fi, но много задержки, если у меня медленное соединение для передачи данных.

Кто-нибудь знает, почему это происходит?


person AmiiQo    schedule 27.12.2012    source источник
comment
Никогда не делайте синхронную сеть в середине вашего кода пользовательского интерфейса.   -  person    schedule 27.12.2012
comment
@ H2CO3, как я могу сделать это по-другому? Мой refreshControl просто вызывает действие для обновления таблицы.   -  person AmiiQo    schedule 27.12.2012
comment
Поместите все сети в фоновом режиме. Загружайте данные асинхронно, обновляйте табличное представление при его загрузке.   -  person    schedule 27.12.2012
comment
Пожалуйста, отправьте код, связанный с обновлением или получением данных   -  person Midhun MP    schedule 27.12.2012
comment
@MidhunMP Я разместил код, спасибо за помощь   -  person AmiiQo    schedule 27.12.2012


Ответы (1)


Вы загружаете и анализируете данные в основном потоке. Потому и висит. Никогда не выполняйте трудоемкие задачи в основном потоке, это заблокирует ваш пользовательский интерфейс.

Измените свой:

-(void) refreshInvoked:(id)sender forState:(UIControlState)state
{
    [self reloadFeed];
}

нравится:

-(void) refreshInvoked:(id)sender forState:(UIControlState)state
{
    dispatch_async(dispatch_queue_create("midhun", NULL), ^{
         [self reloadFeed];
    });
}
person Midhun MP    schedule 27.12.2012
comment
Большое спасибо! Я никогда раньше не работал с другими темами, это невероятно приятно :D - person AmiiQo; 27.12.2012
comment
@AmiiQo: с удовольствием :) Спасибо за комментарий - person Midhun MP; 27.12.2012