J'utilise deux threads dans une application iPhone pour la première fois et j'ai rencontré un problème. Dans ce prototype, j'ai un contrôleur de vue qui charge une page web locale. Je veux qu'un indicateur d'activité apparaisse jusqu'à la fin du chargement de la page. Avec le code ci-dessous, l'indicateur d'activité démarre, la page se charge correctement, mais l'indicateur d'activité ne s'arrête pas ou ne se cache pas. Il ne semble pas que la fonction "chargement" soit appelée.Problème NSThread sur iPhone
Qu'est-ce que je fais mal?
- (void)viewDidLoad {
[self.view addSubview:activityIndicator];
[activityIndicator startAnimating];
[NSThread detachNewThreadSelector:@selector(getData) toTarget:self withObject:nil];
[super viewDidLoad];
}
- (void)getData {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[detailWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"page1" ofType:@"html"]isDirectory:NO]]];
[NSTimer scheduledTimerWithTimeInterval: (1.0/2.0) target:self selector:@selector(loading) userInfo:nil repeats:YES];
[pool release];
}
- (void)loading {
if(!detailWebView.loading){
[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];
}
J'apprécie de quelques-unes des réponses que le filetage ne semble pas être nécessaire pour cela, mais je suis en train de comprendre comment utiliser le filetage pour une plus scénario complexe que je vais aborder. Ceci est juste un prototype. –