2009-12-07 1 views

Répondre

5

Nous n'utiliserions normalement pas un NSRunLoop en production pour attendre qu'une variable change. On pourrait utiliser un rappel.

Cependant, dans le code de test unitaire nous avons les éléments suivants:

NSDate *twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0]; 
    while (!callBackInvoked && !errorHasOccured && runCount-- && [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:twoSecondsFromNow]) { 
     twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0]; 
    } 

Le code attend jusqu'à ce que notre rappel est invoquée, une erreur est survenue ou le nombre de 2 secondes périodes, nous avons attendu a eu lieu . Nous utilisons cela pour tester les délégués qui effectuent des rappels.

Comme je l'ai dit, je ne le ferais pas en code de production.

1

Vous généralement pas utiliser NSRunLoop directement dans votre code.

Vous par exemple créer l'application GUI qui a déjà NSRunLoop en elle (utiliser des modèles de code d'application prédéfinis dans Xcode). Cela dépend de la variable qui est censée changer, vous pouvez l'avoir quelque part dans votre objet 'Model' et il sera changé par certains même comme les données arrivant en ligne, ou liées à l'objet GUI et à l'action effectuée par l'utilisateur.

  • Si c'est le bouton, vous devez configurer les gestionnaires pour invoquer l'action.
  • S'il est variable, configurez KVC/KVO pour détecter les modifications et appelez le gestionnaire .

Et ainsi de suite, Cocoa va gérer le code de la colle pour vous, vous avez juste besoin de configurer la manipulation appropriée pour effectuer une action.

Il n'y a pas assez de détails dans votre question, je suggère de jeter un oeil à certains tutorial at Apple's site for developers de base pour voir ce qui est disponible dans Cocoa.

Questions connexes