2011-05-31 2 views
0

Dans mon application, j'ai un grand nombre, environ 70000 enregistrements à charger dans une tableview. Il faut beaucoup de temps pour charger comme dix minutes. Comme il bloque la UIthread principale, je suis incapable de revenir en arrière ou d'accéder à n'importe quel bouton. Existe-t-il un moyen alternatif comme l'utilisation d'un fil séparé à cette fin ou toute autre approche? S'il te plait, montre-moi un moyen.Annulation du chargement des données dans uitableview dans l'iphone

Merci, Vinod.

Répondre

1

Utilisez un NSThread.

Votre code ressemblera à quelque chose le long des lignes de:

NSThread *thread = [NSThread initWithTarget:self selector:@selector(loadData:) object:nil]; 
[thread start]; 
[thread release]; 

-(void) loadData:(id) obj { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    // load data 
    [pool release]; 
} 

Si vous avez besoin de faire quoi que ce soit sur le thread principal de l'interface utilisateur du thread nouvellement créé, utilisez la méthode performSelectorOnMainThread:withObject sur l'objet courant.

+0

Il charge la tableview qui bloque le fil principal. Existe-t-il un autre moyen d'annuler le chargement au milieu? Merci ! – Atom

+0

Oui, tant que vous avez une référence au thread, vous pouvez l'annuler en appelant la méthode 'cancel'. Il semble que vous essayez de forcer toutes les données sur le fil de l'interface utilisateur à la fois. Avez-vous essayé de diviser les données? L'utilisateur ne pourra pas faire défiler les 70 000 lignes à la fois, n'est-ce pas? – csano

Questions connexes