Skip to content

Instantly share code, notes, and snippets.

@shu223
Created January 13, 2016 13:48
Show Gist options
  • Save shu223/008f2b48a617f289f4a9 to your computer and use it in GitHub Desktop.
Save shu223/008f2b48a617f289f4a9 to your computer and use it in GitHub Desktop.
サブクラスのリストを取得する
#import <objc/runtime.h>
@implementation ClassList
+ (NSArray*)subclassesOfClass:(Class)parentClass
{
int numClasses = objc_getClassList(NULL, 0);
Class *classes = (Class*)malloc(sizeof(Class) * numClasses);
numClasses = objc_getClassList(classes, numClasses);
NSMutableArray *result = [NSMutableArray array];
for(NSInteger i=0; i<numClasses; i++){
Class cls = classes[i];
do{
cls = class_getSuperclass(cls);
}while(cls && cls != parentClass);
if(cls){
[result addObject:classes[i]];
}
}
free(classes);
return [result copy];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment