J'ai une classe (mais pas d'instance) et j'ai besoin de savoir si elle est conforme à un certain protocole. Cependant, Class peut être sous-classée plusieurs fois et class_conformsToProtocol () ignore les protocoles déclarés sur les superclasses.
Je pourrais simplement utiliser class_getSuperclass () et vérifier récursivement toutes les classes de la hiérarchie jusqu'à ce que la superclasse soit nulle. Cependant, je me demande si cela pourrait être inefficace pour les hiérarchies de classes profondément imbriquées, et peut-être y a-t-il une meilleure façon de le faire?
En d'autres termes, comment la méthode NSObject conformsToProtocol est-elle mieux implémentée à l'aide des méthodes d'exécution Objective-C afin de trouver des protocoles sur des superclasses?
[myObject conformsToProtocol:@protocol(MyProtocol)];
Si je suis sur la bonne voie avec une montée récursive dans la hiérarchie des classes, faites-le moi savoir.
la source
self.delegate
implémente plusieurs protocoles et je veux vérifier s'il est conforme à d'autres que sa classe.[someObject conformsToProtocol:@protocol(MyProtocol)]
.Ou, dans le cas où il s'agit d'un pointeur général, comme:
vous pouvez utiliser:
la source