Quelqu'un peut-il m'expliquer comment exactement le comportement de NSTimer est?NSTimer selector calling
Fondamentalement, je veux savoir s'il existe toujours un moyen de déclencher l'événement NSTimer. Événement s'il y a actuellement quelque chose en cours d'exécution.
Par exemple, dans:
NSTimer* testTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(testMethod) userInfo:nil repeats: NO];
for (int i=0; i<9999; i++) {
NSLog(@"%i", i);
}
testMethod ne sera jamais exécutée depuis la boucle est en cours d'exécution lorsque l'événement se déclenche.
Il est souvent beaucoup plus simple de faire simplement une autre minuterie pour cette boucle, en effectuant une itération chaque fois que la minuterie se déclenche. Ou, de nos jours, vous pouvez utiliser une file d'attente d'opérations ou une file d'attente à la place - essentiellement la même chose, mais potentiellement parallèle. Toute solution enfilée (y compris une file d'attente d'opération ou la file d'attente principale de répartition) apportera beaucoup de maux de tête potentiels qui ne feraient que retarder une autre minuterie sur le thread principal. –
D'accord - si vous essayez d'exécuter une petite tâche plusieurs fois, évitez définitivement les discussions! Si c'est une tâche de longue haleine, vous avez juste à mordre la balle et en apprendre davantage sur le filetage :( – deanWombourne