2010-02-25 5 views
1

J'utilise un framework pour obtenir des informations du réseau. Le problème est la fonction que j'utilise pour obtenir l'information est enfilée (c'est-à-dire qu'elle donne des informations à travers un sélecteur didFinish, pas la fonction réelle comme valeur de retour).Fonction de délégation de threads d'appel NSThread

Je souhaite créer un NSThread distinct qui utilise cette fonction filetée. Le problème est que si je détache un thread, il n'attendra pas les informations de cette fonction threadée (et il ne sait pas quand les informations sont renvoyées).

Y at-il un moyen de résoudre cette situation? En un mot, je veux transformer une fonction asynchrone en une fonction synchrone.

Répondre

2

Vous voulez lire sur NSRunLoop et Threading Programming Guide

Je pense que l'approche de base sera quelque chose comme ceci:

  • Dans votre corps principal fil détaché
    • vous définissez en tant que source d'entrée personnalisée au runloop
    • alors que votre état n'est pas terminé, exécutez le cycle
  • Dans didFinish:
    • ensemble un état qui dit que vous avez terminé
    • dire la runloop que la source d'entrée (vous) a tiré