Je veux savoir comment appeler mon function
sur le fil principal .
Comment puis-je m'assurer que mon function
est appelé sur le fil principal ?
(cela fait suite à une précédente question de la mienne)
y a-t-il une règle que je peux suivre pour m'assurer que mon application exécute mon propre code juste dans le fil principal?
En règle générale, vous n'avez rien à faire pour vous en assurer - votre liste de choses est généralement suffisante. Sauf si vous interagissez avec une API qui génère un thread et exécute votre code en arrière-plan, vous exécuterez le thread principal.
Si vous voulez être vraiment sûr, vous pouvez faire des choses comme
[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];
exécuter une méthode sur le thread principal. (Il y a aussi un équivalent GCD.)
Cela va le faire:
[[NSOperationQueue mainQueue] addOperationWithBlock:^ {
//Your code goes in here
NSLog(@"Main Thread Code");
}];
J'espère que cela t'aides!
Lorsque vous utilisez iOS> = 4
dispatch_async(dispatch_get_main_queue(), ^{
//Your main thread code goes in here
NSLog(@"Im on the main thread");
});
je pense que c'est cool, même si en général sa forme permet de laisser l'appelant d'une méthode chargée de s'assurer qu'il est appelé sur le bon fil.
if (![[NSThread currentThread] isMainThread]) {
[self performSelector:_cmd onThread:[NSThread mainThread] withObject:someObject waitUntilDone:NO];
return;
}