Ich habe eine Klasse (aber keine Instanz) und muss wissen, ob sie einem bestimmten Protokoll entspricht. Class kann jedoch mehrmals in Unterklassen unterteilt werden, und class_conformsToProtocol () ignoriert Protokolle, die für Superklassen deklariert wurden.
Ich könnte einfach class_getSuperclass () verwenden und rekursiv alle Klassen in der Hierarchie nach oben überprüfen, bis die Superklasse Null ist. Ich frage mich jedoch, ob dies für tief verschachtelte Klassenhierarchien ineffizient sein könnte, und vielleicht gibt es einen schöneren Weg, dies zu tun?
Mit anderen Worten, wie lässt sich die NSObject-Methode am besten mit Objective-C-Laufzeitmethoden implementieren, um Protokolle für Oberklassen zu finden?
[myObject conformsToProtocol:@protocol(MyProtocol)];
Wenn ich mit der rekursiven Erhöhung der Klassenhierarchie auf dem richtigen Weg bin, lassen Sie es mich einfach wissen.
quelle
self.delegate
implementiert mehrere Protokolle und ich möchte überprüfen, ob es mit anderen als seiner Klasse übereinstimmt.[someObject conformsToProtocol:@protocol(MyProtocol)]
.Oder, falls es sich um einen allgemeinen Zeiger handelt, wie:
Sie können verwenden:
quelle