问题
I am new to Xcode. I want to know how can I know all classes conform to certain protocol in Xcode 4.3.1? And how can I know all subclasses of one class?
回答1:
Use the Objective-C runtime functions.
objc_getClassList
to get the list ofClass
esclass_getSuperclass
or the-superclass
method to walk the superclass chainclass_conformsToProtocol
or the-conformsToProtocol:
method to check if a class conforms to a protocol
回答2:
Protocol *protocol = @protocol(YourProtocol);
int numberOfClasses = objc_getClassList(NULL, 0);
Class *classList = malloc(numberOfClasses * sizeof(Class));
numberOfClasses = objc_getClassList(classList, numberOfClasses);
for (int idx = 0; idx < numberOfClasses; idx++)
{
Class class = classList[idx];
if (class_getClassMethod(class, @selector(conformsToProtocol:)) && [class conformsToProtocol:protocol])
{
NSLog(@"%@", NSStringFromClass(class));
}
}
free(classList);
来源:https://stackoverflow.com/questions/9882984/how-do-i-get-list-of-all-classes-conform-to-certain-protocol-in-xcode-4