Skip to content

Instantly share code, notes, and snippets.

@darcyliu
Created September 4, 2019 09:18
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save darcyliu/ac6405206faf8b55cb21a5b3f04e7c25 to your computer and use it in GitHub Desktop.
Save darcyliu/ac6405206faf8b55cb21a5b3f04e7c25 to your computer and use it in GitHub Desktop.
List all image names and class names
#import <objc/runtime.h>
NSArray *AllImageNames() {
unsigned int imageCount = 0;
const char **imageNames = objc_copyImageNames(&imageCount);
NSMutableArray<NSString *> *imageNameStrings = [[NSMutableArray alloc] initWithCapacity:imageCount];
if (imageNames!=NULL) {
for (unsigned int i = 0; i < imageCount; i++){
const char *imageName = imageNames[i];
NSLog(@"image name: %s", imageNames[i]);
[imageNameStrings addObject:[NSString stringWithUTF8String:imageName]];
}
free(imageNames);
}
NSLog(@"Total image count: %u", imageCount);
return [imageNameStrings sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
}
NSArray *AllClassNamesForImage(const char *imageName) {
unsigned int classNamesCount = 0;
const char ** classNames = objc_copyClassNamesForImage(imageName, &classNamesCount);
NSMutableArray<NSString *> *classNameStrings = [[NSMutableArray alloc] initWithCapacity:classNamesCount];
if (classNames != NULL) {
for (int i = 0; i < classNamesCount; i++) {
const char *className = classNames[i];
NSLog(@"class name: %s", classNames[i]);
[classNameStrings addObject:[NSString stringWithUTF8String:className]];
}
free(classNames);
}
NSLog(@"Total class count: %u", classNamesCount);
return [classNameStrings sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
}
// eg:
// AllImageNames();
// AllClassNamesForImage(class_getImageName([self class]));
// AllClassNamesForImage([NSBundle mainBundle].executablePath.UTF8String);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment