Eu tenho uma classe (mas nenhuma instância) e preciso saber se está em conformidade com um determinado protocolo. No entanto, Class pode ser subclassificado várias vezes e class_conformsToProtocol () ignora os protocolos declarados nas superclasses.
Eu poderia apenas usar class_getSuperclass () e verificar recursivamente todas as classes na hierarquia para cima até que a superclasse seja nula. No entanto, eu me pergunto se isso pode ser ineficiente para hierarquias de classe profundamente aninhadas, e talvez haja uma maneira melhor de fazer isso?
Em outras palavras, como o método NSObject é melhor implementado usando o método de tempo de execução Objective-C para que ele encontre protocolos nas superclasses?
[myObject conformsToProtocol:@protocol(MyProtocol)];
Se eu estiver no caminho certo, subindo recursivamente a hierarquia de classes, é só me avisar.
fonte
self.delegate
implementa vários protocolos e quero verificar se está em conformidade com outras pessoas além da classe.[someObject conformsToProtocol:@protocol(MyProtocol)]
.Ou, caso seja um ponteiro geral, como:
você pode usar:
fonte