Получить все подклассы UIView во время выполнения в Objective-c - PullRequest
2 голосов
/ 18 ноября 2011

Возможно ли во время выполнения Objective-C получить массив всех подклассов класса UIView?

1 Ответ

8 голосов
/ 18 ноября 2011

Вот код, который печатает имена всех подклассов UIView: (Как получить список всех классов, доступных во время выполнения, можно найти здесь ).Также обратите внимание, что этот код будет печатать только прямые подклассы 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...