I have a Class (but no instance) and need to know if it conforms to a certain protocol. However, Class can be subclassed several times and class_conformsToProtocol() ignores protocols declared on superclasses.
I could just use class_getSuperclass() and recursively check all the classes in the hierarchy upwards until the superclass is nil. However I wonder if that might be inefficient for deeply nested class hierarchies, and maybe there's a nicer way to do that?
In other words, how is the NSObject method conformsToProtocol best implemented using Objective-C runtime methods so that it finds protocols on superclasses?
[myObject conformsToProtocol:@protocol(MyProtocol)];
If I'm on the right track with recursively going up the class hierarchy just let me know.
Or, in case it is a general pointer, like:
Class<MyProtocol> someClassPointer = nil;
you can use:
[someClassPointer.class conformsToProtocol:@protocol(MyProtocol)];
Success story sharing
self.delegate
implements multiple protocols and I want to check if it conforms to others than it's class.[someObject conformsToProtocol:@protocol(MyProtocol)]
.