validité pour les timer
Bonjour, aprés avoir arrété mes timer avec la méthode invalidate, je voudrais tester qu'ils sont bien arrétés en faisant :
mais j''ai une erreur :
(je ne comprend pas le message d'ailleur)
Est ce que quelqu'un connait une méthode (la condition plutôt) pour vérifier que mes 2 timer sont bien arrétés?
Merci
if(([timer1 isValid] == NO)&&([timer2 isValid] == NO)){[...]}
mais j''ai une erreur :
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFType isValid]: unrecognized
(je ne comprend pas le message d'ailleur)
Est ce que quelqu'un connait une méthode (la condition plutôt) pour vérifier que mes 2 timer sont bien arrétés?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu peux aussi faire comme ça :
C'est vraiment bizarre parce que avant de tester si mes timers sont arrétés je teste justement pour chacun des 2, lequel est en route (les 2 ne tournent pas en même temps), et je les fait s'arréter au bout de 3 et 5 secondes (preuve à l'appuis dans mon log)
Si tu veux vérifier que ton timer disparaà®t, deux solutions :
• Sous-classer NSTimer et mettre un message dans le dealloc.
2) Faire un retain à la création du timer, et utiliser isValid. Ne pas oublier le release.
Ainsi au lieu de faire un "retain" après le "scheduledTimerXXX..." et un release à la fin, tu peux faire un "myTimer = nil" juste après ton [myTimer invalidate], puisque tu n'as pas de raison de garder trace d'un Timer invalide (d'autant que si tu ne fais pas de retain comme expliqué plus haut du coup plus personne le le retient pas même la RunLoop donc il se détruit tout seul).
Du coup si tu le remet à nil juste après lui avoir envoyé la commande invalidate, tu n'as plus qu'à tester si ton Timer est nil (donc [tt]if (myTimer)[/tt] et non pas [tt]if ([myTimer isValid])[/tt])
Je fait toujours comme ça c'est très pratique. Il me semble même que c'est une astuce donnée dans le Aaron Hillegass. Me tromp-je ?
Merci à tous et à trés bientôt dans un autre sujet que je vais créer, euh... disons, tout de suite.