2012-12-27 3 views
1

J'ai développé un flux RSS avec un UIRefreshControl afin d'actualiser le contenu. Mais chaque fois que je déclenche le UIRefreshControl, il traîne terriblement. Il n'y a pas de décalage si je suis en Wifi mais beaucoup de décalage si je suis sur une connexion de données lente.UIRefreshControl lag

Est-ce que quelqu'un a une idée de ce qui se passe?

+0

Ne faites jamais en réseau synchrone au milieu de votre code d'interface utilisateur. –

+0

@ H2CO3 comment puis-je le faire différemment? Mon refreshControl appelle simplement l'action pour actualiser la tableview – AmiiQo

+0

Mettez tous les réseaux en arrière-plan. Chargez les données de manière asynchrone, actualisez la vue de la table lorsqu'elle est chargée. –

Répondre

1

Vous téléchargez et analysez les données dans le fil principal. C'est pourquoi ça pend. Ne faites jamais de tâches fastidieuses sur le thread principal, cela bloquera votre interface utilisateur.

Changer votre:

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

comme:

-(void) refreshInvoked:(id)sender forState:(UIControlState)state 
{ 
    dispatch_async(dispatch_queue_create("midhun", NULL), ^{ 
     [self reloadFeed]; 
    }); 
} 
+0

encore avoir un problème? –

+0

Merci beaucoup! Je n'ai jamais travaillé avec d'autres threads avant, c'est incroyablement sympa: D – AmiiQo

+0

@AmiiQo: avec plaisir :) Merci pour votre commentaire –