Another option would be to iterate over all classes registered at runtime and use +[NSBundle bundleForClass:] for each of them to figure out which one. Then you can sort things in sets based on the result.
Something like that:
@interface NSBundle (DDAdditions) - (NSArray *)definedClasses_dd; @end @implementation NSBundle (DDAdditions) - (NSArray *)definedClasses_dd { NSMutableArray *array = [NSMutableArray array]; int numberOfClasses = objc_getClassList(NULL, 0); Class *classes = calloc(sizeof(Class), numberOfClasses); numberOfClasses = objc_getClassList(classes, numberOfClasses); for (int i = 0; i < numberOfClasses; ++i) { Class c = classes[i]; if ([NSBundle bundleForClass:c] == self) { [array addObject:c]; } } free(classes); return array; } @end
Then you can call:
NSLog(@"%@", [[NSBundle mainBundle] definedClasses_dd]);
Dave delong
source share