Question

comment utiliser comment utiliser NSRunLoop en Objective-C et attendre une variable pour changer la valeur?

Merci

Était-ce utile?

La solution

Nous utiliserions normalement pas NSRunLoop dans la production d'attendre une variable pour changer. 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 l'utilisons pour tester les délégués qui font callbacks.

Comme je l'ai dit que je ne ferais pas cela dans le code de production.

Autres conseils

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

Vous par exemple créer application GUI qui a déjà NSRunLoop en elle (utiliser des modèles de code d'application prédéfinis dans Xcode).

Il dépend de ce que la variable est qui est censé changer, vous pourriez avoir quelque part dans votre objet « modèle » et il sera modifié par certains même comme les données arrivant en ligne, ou liés à l'objet interface graphique et utilisateur effectué une action.

  • Si c'est le bouton que vous le feriez configuration les gestionnaires d'invoquer l'action.
  • Si elle est variable que vous le feriez configuration KVC / KVO pour détecter le changement et appel gestionnaire.

Et ainsi de suite, Cocoa traitera le code de la colle pour vous, vous avez juste besoin d'installer un traitement approprié pour exécuter cette action.

Il y a je suggère de ne pas suffisamment de détails dans votre question, avoir un regard sur une base tutoriel sur le site d'Apple pour les développeurs pour voir ce qui est disponible dans le cacao.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top