获取当前工程下自己创建的所有类(不包含系统类,CocosPods类)
#import <objc/runtime.h>
#import <dlfcn.h>
#import <mach-o/ldsyms.h>
- (void)printOwnClassesInfo {
unsigned int classCount;
const char **classes;
Dl_info info;
dladdr(&_MH_EXECUTE_SYM, &info);
classes = objc_copyClassNamesForImage(info.dli_fname, &classCount);
dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);
dispatch_apply(classCount, dispatch_get_global_queue(0, 0), ^(size_t index) {
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
NSString *className = [NSString stringWithCString:classes[index] encoding:NSUTF8StringEncoding];
NSLog(@"---------%@", className);
dispatch_semaphore_signal(semaphore);
});
}
获取当前工程下的所有类(包含系统类,CocosPods类)
- (void)printAllClassesInfo {
int classCount = objc_getClassList(NULL, 0);
Class *classes = NULL;
classes = (__unsafe_unretained Class *)malloc(sizeof(Class) *classCount);
classCount = objc_getClassList(classes, classCount);
dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);
dispatch_apply(classCount, dispatch_get_global_queue(0, 0), ^(size_t index) {
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
Class class = classes[index];
NSString *className = [[NSString alloc] initWithUTF8String: class_getName(class)];
NSLog(@"---------%@", className);
dispatch_semaphore_signal(semaphore);
});
free(classes);
}