在Objective-c中获取运行时UIView的所有子类

时间:2011-11-18 13:27:41

标签: objective-c reflection

在Objective-c运行时是否可以获取UIView类的所有子类的数组?

1 个答案:

答案 0 :(得分:8)

这是打印所有UIView子类名称的代码:(如何获取运行时可用的所有类的列表here)。另请注意,此代码将仅打印直接UIView子类,如果您希望进一步向下层次结构,则可能需要以所需的超类作为参数递归调用列出的代码。

Class * classes = NULL;
int numClasses = objc_getClassList(NULL, 0);

if (numClasses > 0 )
{
    classes = malloc(sizeof(Class) * numClasses);
    numClasses = objc_getClassList(classes, numClasses);

    for (int i = 0; i < numClasses; ++i){
        if (class_getSuperclass(classes[i]) == [UIView class]){
            NSLog(@"%@", NSStringFromClass(classes[i]));
        }
    }

    free(classes);
}