6
votes

spectacleSelector AfterDelay ne fonctionne pas

J'utilise la méthode suivante dans une sous-classe UIVIEW:

[NSRunLoop cancelPreviousPerformRequestsWithTarget:self selector:@selector(timeout) object:nil];


1 commentaires

sa bonne fonctionne, je viens d'essayer votre code


4 Réponses :


1
votes

Vous pouvez le faire avec 2 façons:

  1. Vous pouvez utiliser ceci qui supprimerait toute la mise en file d'attente

    [NsObject AnnultionPreviousperformRequestSwithTarget: auto];

  2. Vous pouvez supprimer chacun individuellement

    [NsObject AnnulerPréviousperformRequestSwithTarget: Self Sélecteur: @Selector (délai d'attente) objet: nil];


0 commentaires

3
votes

deux points
1. Les deux sont-ils auto même objet ??
2. Est-ce que [NsObject CancelpreviousperformRequestSwithTarget: Sélecteur auto-sélecteur: @Selector (Timeout) Objet: nil]; effectué sur le même thread sur lequel vous appelez [auto-performselector: @Selector (délai d'attente) withObject: nil AfterDelay: 20]; ?

Vérifiez ces deux problèmes.


0 commentaires

3
votes

Utilisez un NSTIMER stocké comme une variable d'instance dans votre classe. Lorsque vous souhaitez annuler l'exécution, invalider et détruire la minuterie.

dans votre @interface: xxx

dans votre @Implementalation: xxx

Puis, si une condition se produit et que la méthode du délai d'attente ne doit plus être appelée: xxx


0 commentaires

2
votes

Essayez ceci:

[self performSelectorOnMainThread:@selector(timeout) withObject:self waitUntilDone:NO];


0 commentaires