Fonction d'attente (Wait) dans l'iPhone SDK / iOS SDK
Les kits de développement (SDK) permettent de créer des apps pour des plateformes spécifiques comme l'iPhone d'Apple. Comme l'iPhone tourne sous iOS, les développeurs utilisent l'iOS SDK (anciennement iPhone SDK). Bien que l'iOS SDK ne prenne pas en charge la fonction « wait » commune dans d'autres SDK (ex: Windows), des substituts existent pour le même objectif.
Principes de la fonction Wait
En programmation, les fonctions wait permettent à un thread de faire pause en bloquant son exécution. L'appel à wait met le thread en attente jusqu'à ce que certains critères soient remplis. Jusque-là, le thread est en état idle. Alternative : spécifier un intervalle de timeout, qui force l'attente pour une durée précise plutôt que basée sur un critère.
Sleep (NSThread)
L'utilisation de NSThread (objets contrôlant un thread d'exécution, permettant à une méthode Objective-C de tourner sur un thread séparé sans bloquer les autres) dans l'iOS SDK permet d'activer une fonction sleep équivalente à un wait basé sur intervalle de temps. La méthode de classe « sleepForTimeInterval:[durée en secondes] » met l'exécution du thread en pause pour une durée précise. L'objet « sleepUntilDate » permet de spécifier une heure future pour reprendre le thread.
Exécuter une méthode après délai
L'iOS SDK propose aussi une fonction pour retarder l'appel d'une méthode. Cette méthode réside dans NSObject, classe racine d'Objective-C. Cette alternative au wait permet d'exécuter une méthode en spécifiant un objet comme paramètre, le délai étant donné en secondes. Ex : changer le texte d'un label dans une app après 5 secondes avec « anArgument afterDelay:[NSTimeInterval] delay ».
Considérations
Les apps iPhone étant en Objective-C, la familiarité avec ce langage est nécessaire pour utiliser correctement ces équivalents du wait. Au vu des dizaines de versions précédentes, l'iOS SDK en était à la 3e bêta de sa version 5.1 stable en mars 2012. Comme Apple ajoute des fonctionnalités à chaque révision, le support des fonctions wait peut évoluer.
