¿Cómo verificar si un delegado responde a un selector?


Sé que necesito escribir:

 [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 ejemplos de código usar esto, ¿cómo lo haces?

Author: Tshepang, 2010-02-10

2 answers

Su @protocol necesita implementar <NSObject>, simplemente actualice su definición de protocolo para que se vea así:

@protocol MyProtocol <NSObject>
 58
Author: Greg Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-10 18:05:25

Greg Martin tiene su respuesta, pero aquí hay una explicación rápida de por 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 ser capaz de manejarlo.

 9
Author: e.James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:08