Tengo una clase (pero ninguna instancia) y necesito saber si se ajusta a un determinado protocolo. Sin embargo, Class se puede subclasificar varias veces y class_conformsToProtocol () ignora los protocolos declarados en las superclases.
Podría usar class_getSuperclass () y verificar recursivamente todas las clases en la jerarquía hacia arriba hasta que la superclase sea nula. Sin embargo, me pregunto si eso podría ser ineficiente para las jerarquías de clase profundamente anidadas, y ¿tal vez hay una mejor manera de hacerlo?
En otras palabras, ¿cómo se implementa mejor el método NSObject conformsToProtocol utilizando métodos de tiempo de ejecución Objective-C para que encuentre protocolos en superclases?
[myObject conformsToProtocol:@protocol(MyProtocol)];
Si estoy en el camino correcto con el ascenso recursivo de la jerarquía de clases, házmelo saber.
fuente
self.delegate
implementa múltiples protocolos y quiero verificar si se ajusta a otros que no sean de su clase.[someObject conformsToProtocol:@protocol(MyProtocol)]
.O, en caso de que sea un puntero general, como:
puedes usar:
fuente