Encontre dinamicamente as classes Objective-C disponíveis

objc_getClassList fornece uma lista de todas as classes disponíveis, perguntando ao tempo de execução ObjC.

Não se esqueça de importar para o tempo de execução (#import <objc / runtime.h>) e vincular a ele (libobjc.dylib).

Você pode então fazer coisas engraçadas; por exemplo: encontrar classes com um nome que corresponda a um padrão específico com um bloco:

NSArray* getClassesMatching(BOOL(^block)(NSString *className)) {
NSMutableArray *array = [NSMutableArray array];

int numClasses;
Class * classes = NULL;

classes
= NULL;
numClasses
= objc_getClassList(NULL, 0);

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

Class class = nil;
for (int i = 0; i < numClasses; i++) {
class = classes[i];

if (block([NSString stringWithCString:class_getName(classes[i]) encoding:NSUTF8StringEncoding])) {
[array addObject:class];
}
}
free
(classes);
}
return [array copy];
}