objective c - Runtime de Objective-C: melhor maneira de verificar se a classe está em conformidade com o protocolo?




(2)

Ou, no caso, é um ponteiro geral, como:

Class<MyProtocol> someClassPointer = nil;

você pode usar:

[someClassPointer.class conformsToProtocol:@protocol(MyProtocol)];

Eu tenho uma classe (mas nenhuma instância) e preciso saber se ela está de acordo com um determinado protocolo. No entanto, Class pode ser subclassed várias vezes e class_conformsToProtocol () ignora protocolos declarados em 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, pergunto-me se isso pode ser ineficiente para hierarquias de classes profundamente aninhadas, e talvez haja uma maneira mais agradável de fazer isso?

Em outras palavras, como é o método NSObject conformsToProtocol melhor implementado usando métodos de tempo de execução Objective-C para que ele encontre protocolos em superclasses?

 [myObject conformsToProtocol:@protocol(MyProtocol)];

Se eu estou no caminho certo com a subida recursiva da hierarquia de classes, me avise.


Segundo os docs ,

[MyClass conformsToProtocol:@protocol(MyProtocol)];

Deveria trabalhar.





runtime