IPhone app appelé à disparaître en raison de uncaught exception
SALUT,
Je développe une application iphone en utilisant cocos2d. Son le montre ce msg.
2009-01-26 16:17:40.603 Find The Nuts[449:20b] *** -[NSCFArray onTimer:]: unrecognized selector sent to instance 0x59be030
2009-01-26 16:17:40.605 Find The Nuts[449:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFArray onTimer:]: unrecognized selector sent to instance 0x59be030'
ici onTimer est un compte à rebours de la méthode. quelle est la solution pour cela?
Vous devez vous connecter pour publier un commentaire.
Votre méthode onTimer est envoyé à une instance de NSArray pour une raison quelconque. Il est probable que vous êtes soit accidentellement de l'envoyer à une véritable instance de NSArray, ou que l'objet que vous êtes vraiment essayer de l'envoyer à a été publié (aka, n'est plus accessible) par le temps de la minuterie en fait feux de.
Je voudrais essayer de faire un peu de mémoire de débogage pour savoir si votre minuterie cible est publié à un moment inopportun. Si tout semble ok, vérifiez que vous êtes bien le réglage de la minuterie de la cible jusqu'à l'objet.
Non comptabilisé sélecteur d'erreur est plus probable parce que vous êtes de passage le texte erroné pour le @sélecteur de paramètre. Sélecteur de noms DOIT inclure ':' attributs à chaque fois qu'il y a un paramètre dans la signature. Donc, si vous avez une méthode de minuteur
Le selecter vous passez à
scheduledTimerWithTimeInterval
doit être:Le plein appel à NSTimer, serait quelque chose comme:
sonne comme vous n'êtes pas fournir une méthode valide pour la minuterie pour appeler à la fin du décompte. Vous devez définir le sélecteur de la méthode et de la cible à des objets valides. voir l'exemple ci-dessous:
Peut-être que la cible est en train d'être libéré avant qu'il retourne?
Aussi, vous pourriez essayer d'ajouter le suivant des points de rupture qui va piège lorsque l'exception se produit.
objc_exception_throw et -[NSException soulever]. Sur l'iPhone, je pense que toutes les exceptions voyage à travers objc_exception_throw mais si vous êtes ciblant Mac OS X Tiger ou une version antérieure, vous devez définir un point d'arrêt sur les deux.
Il y a plus de techniques de débogage à http://www.cocoadev.com/index.pl?DebuggingTechniques.
Tony
Pourquoi le onTimer appel d'une méthode sur un NSArray objet? À partir de votre description, je crois onTimer a cette définition
Dans ce cas, onTimer est une méthode de votre viewcontroller (ou d'une autre classe que vous avez créé), mais pas une méthode d'un tableau. Comment êtes-vous de l'invocation de la minuterie? La bonne façon de démarrer une minuterie qui va appeler cette méthode est cette
La raison pour laquelle cette erreur se produit est soit vous n'êtes pas en invoquant le timer correctement ou que vous utilisez un objet qui a été libéré.