2010-06-21 6 views
5

Lorsque vous appelez une méthode, j'utiliseAppel de la méthode dans Xcode

[self methodname]; 

Le problème que je vais avoir est, dans xCode je reçois des tas de mises en garde! Il dit "*xxxappdelegate.app may not respond to methodname*".

Existe-t-il un meilleur moyen d'appeler des méthodes?

+0

Je n'utiliserais pas toujours «self». –

Répondre

5

Si vous obtenez cet avertissement, cela signifie soit:

  • Cette méthode n'existe pas dans votre classe
  • Si vous appelez cette méthode sur une autre classe (pas auto), puis vous n'a pas importé les en-têtes pour cette classe
+0

Merci, Ill jeter un oeil à mon fichier .h à nouveau :) – user370507

4

Ces avertissements signifient juste que le compilateur ne sait pas si la classe en question a la méthode que vous êtes ca lling. Assurez-vous que la méthode que vous appelez est définie au-dessus de l'emplacement du fichier .m dans lequel vous l'utilisez, ou déclarez la méthode en haut du fichier.

@implemention A 

-(void)blah 
{ 
    [self foo]; // warning! 
} 

-(void)foo 
{ 
    [self blah]; // no warning 
} 

@end 
+0

Merci pour cela, :) – user370507

+1

pour éviter cela, déclarez la méthode dans le fichier. – Nishant

0

Ajouter methodname au @interface pour la classe, xxxappdelegate dans votre exemple. Ou assurez-vous simplement que l'implémentation methodname est antérieure à l'endroit où vous l'appelez dans le fichier.

+0

Merci pour votre aide :) – user370507

1

Il y a quelque chose appelé ordre de compilation. Lorsque vous appelez la méthode foo, elle n'est pas encore définie, mais lorsque vous appelez la méthode blah, elle est définie uniquement dans la ligne supérieure.

beaucoup plus précis:

cout << a; 
string a = "hello"; 

Lorsque vous faites cela, vous obtiendrez une erreur variable non définie "a". Ce que vous devez faire est:

string a = "hello"; 
cout << a; 
0

Si le fichier .h a déclaré la méthode qu'il peut y avoir un certain problème lié à l'incapacité xcodes à l'index pour résoudre ce aller dans les préférences et supprimer les archives et autres données stockées.

Questions connexes