mgamer
mgamer

Reputation: 14050

Get all subclasses of UIView in runtime in Objective-c

Is is possible in Objective-c runtime to get an array of all subclasses of UIView class?

Upvotes: 3

Views: 1433

Answers (1)

Vladimir
Vladimir

Reputation: 170829

Here's the code that prints names of all UIView subclasses: (How to get list of all classes available at runtime can be found here). Note also that this code will print only direct UIView subclasses, if you want to go further down the hierarchy you'll probably need to call listed code recursively with desired superclass as a parameter.

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);
}

Upvotes: 8

Related Questions