KKClassList.m 827 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. //
  2. // KKClassList.m
  3. // WWImageEdit
  4. //
  5. // Created by 邬维 on 2017/1/10.
  6. // Copyright © 2017年 kook. All rights reserved.
  7. //
  8. #import "KKClassList.h"
  9. #import <objc/runtime.h>
  10. @implementation KKClassList
  11. + (NSArray*)subclassesOfClass:(Class)parentClass
  12. {
  13. int numClasses = objc_getClassList(NULL, 0);
  14. Class *classes = (Class*)malloc(sizeof(Class) * numClasses);
  15. numClasses = objc_getClassList(classes, numClasses);
  16. NSMutableArray *result = [NSMutableArray array];
  17. for(NSInteger i=0; i<numClasses; i++){
  18. Class cls = classes[i];
  19. do{
  20. cls = class_getSuperclass(cls);
  21. }while(cls && cls != parentClass);
  22. if(cls){
  23. [result addObject:classes[i]];
  24. }
  25. }
  26. free(classes);
  27. return [result copy];
  28. }
  29. @end