Equivalent de dispatch_get_main_queue() en API haut niveau

FloFlo Membre
08:56 modifié dans API AppKit #1
Bonjour à  tous,

je cherche à  insérer des opérations dans la "main queue" (celle qui est associée au "main thread"). Ce sont des opérations de mise à  jour GUI. Je n'ai pas trouvé comment faire un équivalent de dispatch_get_main_queue() en API de haut niveau...

A moins que ce ne soit ce que fait la méthode performSelectorOnMainThread:withObject:waitUntilDone: de NSObject ?

Merci pour votre aide  ;)

Réponses

  • FloFlo Membre
    08:56 modifié #2
    Ha ben j'ai trouvé  :D

    Il faut utiliser +mainQueue de NSOperationQueue.
  • AliGatorAliGator Membre, Modérateur
    08:56 modifié #3
    Oui à  peu près tout ce qui est API C GrandCentralDispatch retrouve son équivalent dans l'API Objective-C de NSOperation/NSOperationQueue.
    Il manque 2-3 trucs, comme les dispatch_semaphore mais en même temps on en a rarement besoin.

    NB : J'ai été surpris dernièrement de lire dans la doc que NSOperationQueue n'utilisait pas GCD sur iPhone (à  moins que la doc n'ait pas été mise à  jour et date d'avant que GCD ne soit dispo sous iOS ?) :
    Note: In iOS, operation queues do not use Grand Central Dispatch to execute operations. They create separate threads for non-concurrent operations and launch concurrent operations from the current thread.
    du coup (histoire d'être sûr) dans mon programme qui tourne pour moi sous iOS j'ai préféré utiliser l'API C de GCD (et à  vrai dire une fois qu'on l'a un peu utilisé elle n'est pas plus compliquée que NSOperation c'est juste du C)
    Mais bon ta question portant sur MacOSX pour toi ça ne devrait rien changer
  • FloFlo Membre
    08:56 modifié #4
    C'est vrai que l'api de haut niveau pour manipuler de manière transparente GCD est plutôt bien faite.

    Ce qui est plutôt magique c'est qu'un développeur qui utilisait déjà  les concepts d'opération et de file peut l'utiliser sans rien changer à  son code 

    J'ai fortement hésité avant de l'utiliser à  la place des appels directs en C, je trouvais ça vraiment trop bizarre de se retrouver avec du code "bas niveau" en plein milieu d'une méthode  :D
Connectez-vous ou Inscrivez-vous pour répondre.