Necesito una forma segura de decir: "iOS, quiero que este método se ejecute a.s.a.p., pero NO en ESTE ciclo iteración. Lo antes posible en el próximo, pero no en este. Gracias".Cómo llamar a un método a.s.a.p. pero a la primera en la próxima iteración de bucle de ejecución?
En este momento Siempre estoy haciendo de esta manera:
[self performSelector:@selector(doSomethingInNextRunLoop) withObject:nil afterDelay:0];
[self doSomeOtherThings];
Con la suposición de que -doSomeOtherThings
siempre se lleva a cabo antes -doSomethingInNextRunLoop
.
La documentación dice:
Especificación de un retardo de 0 no necesariamente causa el selector sea realiza inmediatamente. El selector todavía está en cola en el ciclo de ejecución de la secuencia y se realiza tan pronto como sea posible.
Así que, básicamente, puede suceder que el método es llamado inmediatamente como si acabara enviado un mensaje directo, causando -doSomethingInNextRunLoop
que se ejecutarán antes -doSomeOtherThings
?
¿Cómo puedo estar absolutamente seguro de que se llamará a.s.a.p. pero NUNCA en esta misma iteración de bucle de ejecución?
Para aclarar la redacción: Con run loop me refiero al hilo principal, y la iteración en la que todos los métodos deben retornar hasta que el hilo esté listo de nuevo para los nuevos eventos.
¡Magnífico! Una categoría para facilitar esto tendría sentido. – openfrog