Skip to content

Instantly share code, notes, and snippets.

@Air-Craft
Created January 26, 2015 15:05
Show Gist options
  • Save Air-Craft/81481e8738185306366b to your computer and use it in GitHub Desktop.
Save Air-Craft/81481e8738185306366b to your computer and use it in GitHub Desktop.
Get a list of subclasses of an Objective-C class #advanced #objective-c #runtime #dynamic
+ (NSArray *)subclassesOfClass:(Class)parentClass
{
int numClasses = objc_getClassList(NULL, 0);
Class *classes = NULL;
classes = (__unsafe_unretained 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 [NSArray arrayWithArray:result];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment