美文网首页
iOS中获取一个类的全部子类

iOS中获取一个类的全部子类

作者: lugic | 来源:发表于2016-09-23 12:26 被阅读956次

    ClassGetSubclasses

    #import "ViewController.h"

    #import <objc/objc-runtime.h>

    NSArray *ClassGetSubclasses(Class parentClass) {

    int numClasses = objc_getClassList(NULL, 0);

    Class *classes = NULL;

    classes = 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;

    注意:objc_getClassList()方法的CPU开支非常大,此方法尽量少用。

    相关文章

      网友评论

          本文标题:iOS中获取一个类的全部子类

          本文链接:https://www.haomeiwen.com/subject/olsdkttx.html