Comment ne pas executer un performselector after delay

al33eral33er Membre
14:57 modifié dans API UIKit #1
Bonjour,

Je fais un performselector after delay pour executer une méthode. Comment faire pour qu'en fonction d'une action utilisateur le perfom ne s'execute pas ?

Dois-je garder cette instruction ou dois-je passer à  un NStimer ?

Je vous remercie par avance pour votre réponse.

Alexandre.

Réponses

  • Philippe49Philippe49 Membre
    14:57 modifié #2
    A l'appel de performSelector tu mets un booléen toExecute à  YES;
    Ton selector appelé commence par  if( ! toExecute) return;
    Et tu mets toExecute=NO; si l'utilisateur fait ton action. 

    Si le performSelector est dans un thread séparé, utilises @synchronized
  • al33eral33er Membre
    14:57 modifié #3
    dans 1246229721:

    A l'appel de performSelector tu mets un booléen toExecute à  YES;
    Ton selector appelé commence par  if( ! toExecute) return;
    Et tu mets toExecute=NO; si l'utilisateur fait ton action. 

    Si le performSelector est dans un thread séparé, utilises @synchronized



    Merci Phil. Quelle rapidité !!
  • AliGatorAliGator Membre, Modérateur
    14:57 modifié #4
    Heu moi je t'aurais plutôt orienté vers la méthode [tt]+ (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget[/tt] qui permet d'annuler un appel précédent à  [tt]performSelector: withTarget: afterDelay:[/tt], c'est précisément fait pour :)
  • Philippe49Philippe49 Membre
    14:57 modifié #5
    Oui, avec ce détail toutefois :

    Discussion
    All perform requests having the same target aTarget are canceled. This method removes perform requests only in the current run loop, not all run loops.
Connectez-vous ou Inscrivez-vous pour répondre.