[débutant] bonne pratique GCD

iApasDeMaliApasDeMal Membre
octobre 2013 modifié dans API AppKit #1

Bonjour à  tous,


 


Je lance des recherches Spotlight(MDQuery) sans bloquer l'interface grâce à  ce bout de code:



MDQuerySetDispatchQueue(mdQuery, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0));

Mais les recherches peuvent être obsolètes à  chaque nouvelle entrée, qui doit stopper la recherche en cours et en déclencher une nouvelle.


Ce changement peut arriver pendant que le programme explore les résultats de la recherche en cours.


Pour éviter les collisions, j'utilise un compteur:




unsigned char indexOfQuery;

indexOfQuery++; // Incremente indexOfQuery at each new query
if(indexOfQuery == 255) indexOfQuery = 0; // Make sure it returns to 0 when it reachs max

Lorsque le programme parcours les résultats de la recherche, il test avant chaque résultat que 'indexOfQuery' soit le même, sinon il arrête de collecter les résultats et attend ceux de la nouvelle recherche.


Il me semble que ce ne soit pas vraiment orthodoxe comme façon de faire.


Je voulais savoir ce que vous me conseillez pour ce genre de cas.


 


Merci d'avance pour vos réponses et vos éclaircissements.


Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.