Skip to content

Instantly share code, notes, and snippets.

@jearle
Created February 17, 2015 22:39
Show Gist options
  • Save jearle/b9a32dd48180cbcaf2f6 to your computer and use it in GitHub Desktop.
Save jearle/b9a32dd48180cbcaf2f6 to your computer and use it in GitHub Desktop.
Get all Objective-C classes containing a matching string in the class name
#import <objc/runtime.h>
#import <objc/message.h>
Class* getClassesFromClassList () {
int numClasses = objc_getClassList(nil, 0);
Class *classes = (__unsafe_unretained Class *)malloc(sizeof(Class) * numClasses);
return classes;
}
BOOL classContainsTestSuffix (Class class) {
const char *classNameC = class_getName(class);
NSString *className = [NSString stringWithFormat:@"%s", classNameC];
return [className containsString:@"_JETest"];
}
NSArray* getTestClasses () {
int numClasses = objc_getClassList(nil, 0);
Class *classes = getClassesFromClassList();
NSMutableArray *classArr = [[NSMutableArray alloc] init];
for (int i = 0 ; i < numClasses ; i++) {
Class class = classes[i];
if ( classContainsTestSuffix(class) ) {
[classArr addObject:class];
}
}
free(classes);
return classArr;
}
void runTestClasses () {
NSArray *testClasses = getTestClasses();
for ( int i = 0 ; i < [testClasses count] ; i++) {
Class testClass = [testClasses objectAtIndex:i];
objc_msgSend(testClass, @selector(test));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment