2010-02-10 23 views
25

Sé que necesito para escribir:¿Cómo verificar si un delegado responde a un selector?

[delegate respondsToSelector:@selector(myMethod:)] 

Pero el compilador se queja de que respondsToSelector no es un método en el protocolo, lo cual es correcto, sin embargo he visto muchos utilizan código de ejemplo de esto, ¿cómo lo haces ?

Respuesta

58

Su @protocol necesita implementar <NSObject>, sólo tiene que actualizar la definición del protocolo a tener este aspecto:

@protocol MyProtocol <NSObject> 
+0

que podría estar haciendo algo mal, pero cuando agrego el el compilador se queja de que ningún tipo puede ser especificado antes de interfaz –

+0

¿Puedes proporcionar tu código? Debe ser un problema de sintaxis. –

+0

Lo puse en funcionamiento intenté implementar en la declaración del protocolo, no en la definición formal, está funcionando ahora. Gracias. –

9

Greg Martin tiene su respuesta, pero aquí es una explicación rápida de qué el compilador se queja:

El método respondsToSelector: es parte del protocolo NSObject, por lo que cuando intenta enviar ese mensaje a su deleate (de tipo id), el compilador no tiene forma de saber que su delegado podría manejarlo.

Cuestiones relacionadas