2010-06-21 30 views
5

Cuando se llama a un método, utilizollamando al método en xCode

[self methodname]; 

El problema que estoy teniendo es, en xCode consigo un montón de advertencias! Está diciendo "*xxxappdelegate.app may not respond to methodname*".

¿Existe alguna forma mejor de llamar a los métodos?

+0

No * siempre * uso 'self'. –

Respuesta

5

Si recibe esta advertencia, eso significa que ya sea:

  • Ese método no existe en la clase
  • Si se llama a este método en una clase diferente (no auto) entonces se no han importado las cabeceras de esa clase
+0

Gracias, Echaré un vistazo a mi archivo .h de nuevo :) – user370507

4

Estas advertencias sólo significa que el compilador no sabe si la clase en cuestión tiene el método que está ca lling. Asegúrese de que el método que está llamando esté definido encima del lugar en el archivo .m en el que lo está utilizando, o declare el método en la parte superior del archivo.

@implemention A 

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

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

@end 
+0

Gracias por eso, :) – user370507

+1

para evitar esto, declare el método en el archivo .h. – Nishant

0

Añadir methodname a la @interface para la clase, xxxappdelegate en su ejemplo. O simplemente asegúrese de que la implementación methodname esté antes del lugar donde lo llame en el archivo.

+0

Gracias por su ayuda :) – user370507

1

Hay algo llamado compilación. Cuando llama al método foo, aún no está definido, sin embargo, cuando llama al método blah, se define solo en la línea superior.

mucho más específico:

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

Cuando se hace eso obtendrá un error variable no definida "a". Lo que debe hacer es:

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

Si el archivo .h tiene el método declaró que puede haber algún problema relacionado con la xcodes incapacidad para resolver este índice para ir a las preferencias y borrar archivos y otros datos almacenados.

Cuestiones relacionadas