2010-03-06 13 views
21

que tienen un protocolo en Objective-C, algo como esto:Método estático del protocolo Objective-C?

@protocol Handler 
+(NSString*) getValue; 
@end 

Así que ahora dicen que tengo una instancia que hereda este protocolo y quiero llamar a este método:

[handlerInstance getValue]; 

Esto da una advertencia porque el método getValue no es un método de instancia. ¿Cómo puedo llamar correctamente este método desde mi instancia? (Sin saber la clase concreta)? Supongo que algo como esto, pero no estoy exactamente seguro:

[[handlerInstance class] getValue]; 

Respuesta

20
[[handlerInstance class] getValue]; 

Sí, como este.

A diferencia de Java y C++, los métodos de clase solo se pueden enviar a la clase.

+0

En serio, creo que no debería haberlo adivinado. – Kyle

+4

No todos nosotros. Probarlo antes de publicarlo no le da a otros el beneficio del conocimiento. Vine aquí buscando cómo se comportaría esto porque 1.) fue más rápido que probarlo y 2.) si hubiera escollos en los que no había pensado, alguien probablemente los notaría aquí. Primero, publicar es menos trabajo para todos los que vienen después. Gracias Kenny y Zenox. – Warren

+1

Entonces, si tengo una variable 'id handler' ¿asigno' instance' or '[instance class]'? ¿Esto funcionará incluso sin una instancia disponible? (¿Solo una 'Clase')? – chakrit

Cuestiones relacionadas