Skip to content

Instantly share code, notes, and snippets.

@alattis
Created August 28, 2014 14:50
Show Gist options
  • Save alattis/ade6beb9d44784d1c444 to your computer and use it in GitHub Desktop.
Save alattis/ade6beb9d44784d1c444 to your computer and use it in GitHub Desktop.
get subclasses
#import <objc/runtime.h>
NSArray* ClassGetSubclasses(Class parentClass)
{
int numClasses = objc_getClassList(NULL, 0);
Class *classes = NULL;
classes = (Class*)malloc(sizeof(Class) * numClasses);
numClasses = objc_getClassList(classes, numClasses);
NSMutableArray *result = [NSMutableArray array];
for (NSInteger i = 0; i < numClasses; i++)
{
Class superClass = classes[i];
do
{
superClass = class_getSuperclass(superClass);
} while(superClass && superClass != parentClass);
if (superClass == nil)
{
continue;
}
[result addObject:classes[i]];
}
free(classes);
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment