0
[UIView animateWithDuration:1 animations:^{
self.animateView.frame = CGRectMake(100, 100, 50, 50);
} completion:^(BOOL finished) {
if (finished) {
NSLog(@"animation finished");
}
}];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
NSLog(@"after runUntilDate");
Tant de code comme ci-dessus, c'est pourquoi? Que se passera-t-il si je commente la ligne runUntilDate?Pourquoi ajouter runUntilDate après l'instruction d'animation?
mise à jour: Si j'ajoute la ligne suivante (NSLog) à la dernière, elle ne s'exécutera pas jusqu'à la fin de l'animation. On dirait que runUntilDate bloque le thread principal, alors pourquoi nous devons bloquer le thread ici?
Pourquoi runUntilDate peut bloquer le thread principal? Et quand nous avons besoin de bloquer le fil principal comme ici? – Sugite
Parce que runloop fonctionne dans le thread principal. Idéalement, vous ne devez pas bloquer le thread principal dans tous les cas. – SerjOxo
runUntilDate suffit de redémarrer une autre itération de runloop, pourquoi mener au blocage des threads, pouvez-vous expliquer au niveau de la source? Merci! – Sugite