2010-02-17 4 views
0

Ok est ici intéressante ... Je reçois l'avertissement : Characters may not respond to 'addHeroType:atX:atY:fromMobTable'en raison de l'application Mettre fin exception uncaught « NSInvalidArgumentException

bien que j'ai les fonctions définies correctement pour autant que je peux voir si une autre paire que diriez-vous des yeux?

Voici la définition dans Characters.h

-(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*)newMobTable; 

Voici la fonction dans le Characters.m

-(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*)newMobTable 

et voici l'appel que je fais dans un autre appel de classe heroFactory (Characters.h est inclus dans heroFactory):

[Characters addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable]; 

Mais cette ligne provoque la fin de l'application en raison d'une exception non détectée - vérification du débogueur Je vois "NSObject ne reconnaît pas le sélecteur"

Je suis convaincu que le problème est la faillance de la raison pour laquelle je vois un avertissement que la classe Caractère peut ne pas répondre à l'appel de la fonction tel qu'il est écrit même s'il correspond à la définition.

Toute aide grandement appréciée.

Répondre

4
-(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*) newMobTable 

Ceci est déclaré comme méthode d'instance.

[Characters addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable]; 

Mais vous l'appelez sur la classe en tant que méthode de classe.

Ainsi soit, déclarer la méthode comme une méthode de classe

+(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*) newMobTable 

ou appelez sur une instance

Characters *instance = [[[Characters alloc] init] autorelease]; 
[instance addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable]; 

En fonction de la portée de votre méthode nécessite, bien sûr.

Questions connexes