J'utilise la méthode suivante dans une sous-classe UIVIEW:
[NSRunLoop cancelPreviousPerformRequestsWithTarget:self selector:@selector(timeout) object:nil];
4 Réponses :
Vous pouvez le faire avec 2 façons: p>
Vous pouvez utiliser ceci qui supprimerait toute la mise en file d'attente p>
[NsObject AnnultionPreviousperformRequestSwithTarget: auto]; p> li>
Vous pouvez supprimer chacun individuellement p>
[NsObject AnnulerPréviousperformRequestSwithTarget: Self Sélecteur: @Selector (délai d'attente) objet: nil]; p> li> ol>
deux points Vérifiez ces deux problèmes. P>
1. Les deux sont-ils auto code> même objet ??
2. Est-ce que [NsObject CancelpreviousperformRequestSwithTarget: Sélecteur auto-sélecteur: @Selector (Timeout) Objet: nil]; code> effectué sur le même thread sur lequel vous appelez
[auto-performselector: @Selector (délai d'attente) withObject: nil AfterDelay: 20]; code>? p>
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: p> dans votre @Implementalation: p> Puis, si une condition se produit et que la méthode du délai d'attente ne doit plus être appelée: p>
Essayez ceci:
[self performSelectorOnMainThread:@selector(timeout) withObject:self waitUntilDone:NO];
sa bonne fonctionne, je viens d'essayer votre code