objective c - usar - Objective-C Runtime: ¿la mejor manera de verificar si la clase se ajusta al protocolo?
programacion en objective c (2)
Tengo una clase (pero no 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 superclases.
Podría simplemente usar class_getSuperclass () y comprobar 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 manera más agradable de hacerlo.
En otras palabras, ¿cómo se adapta mejor el método NSObject al protocolo ToProtocol utilizando los métodos de tiempo de ejecución de Objective-C para que encuentre protocolos en las superclases?
[myObject conformsToProtocol:@protocol(MyProtocol)];
Si estoy en el camino correcto con el aumento recursivo de la jerarquía de clases solo házmelo saber.
O, en caso de que sea un puntero general, como:
Class<MyProtocol> someClassPointer = nil;
puedes usar:
[someClassPointer.class conformsToProtocol:@protocol(MyProtocol)];
De acuerdo con los documentos ,
[MyClass conformsToProtocol:@protocol(MyProtocol)];
Deberia trabajar.