Ceci est ma première question ici, alors excusez-moi si j'ai fait des erreurs!Appelez la méthode d'un délégué dans un contexte
Dans mon projet iPhone, j'ai une méthode en cours d'exécution dans un thread qui prend beaucoup de temps à s'exécuter (c'est pourquoi il s'exécute dans un thread).
[NSThread detachNewThreadSelector:@selector(methodToBeCalledInAThread) toTarget:self withObject:nil];
// ...
-(void)methodToBeCalledInAThread {
MyClass *myClass = [[MyClass alloc] init];
[myClass setDelegate:self];
[myClass veryIntensiveComputing];
[myClass release];
}
Mon but est de l'ViewController avertissons appelant cette méthode de tout progrès en cours dans cette méthode. C'est pourquoi j'ai défini le ViewController en tant que délégué de la classe.
Maintenant, dans la méthode coûteuse je fais ce qui suit:
if(self.delegate != nil) {
[self.delegate madeSomeProgress];
}
Mais malheureusement, cela ne fonctionne pas, parce que (je pense) Je suis dans un thread d'arrière-plan.
Comment puis-je notifier le délégué de tout changement avec la méthode en cours d'exécution asynchrone?
En effet, ils sont. ;) La méthode performSelectorOnMainThread m'est venue à l'esprit il y a quelques minutes. J'ai fini par ajouter une autre méthode dans la classe background-thread, appelée par "performSelectorOnMainThread". Cette méthode appelle donc la méthode du délégué sur le thread principal et tout fonctionne correctement. Je vous remercie! –