4
我试图获取运行时在应用程序中加载的类的列表。我不关心所有类,只是那些加载。我知道如何获得所有类的列表,但通过遍历它们来检查它们是否处于加载的包中会导致随机崩溃,并且看起来像是一种矫枉过正的方式。iOS:获取包中的所有类或加载应用程序
我已经看到引用NSLoadedClasses,但我真的找不到任何东西,我不确定它适用于iOS(vs Mac)。什么是正确的方式去得到这个?同样,我在运行时需要它。
我试图获取运行时在应用程序中加载的类的列表。我不关心所有类,只是那些加载。我知道如何获得所有类的列表,但通过遍历它们来检查它们是否处于加载的包中会导致随机崩溃,并且看起来像是一种矫枉过正的方式。iOS:获取包中的所有类或加载应用程序
我已经看到引用NSLoadedClasses,但我真的找不到任何东西,我不确定它适用于iOS(vs Mac)。什么是正确的方式去得到这个?同样,我在运行时需要它。
看起来像我想出来的。如果你需要做到这一点,这里是如何做到这一点:
#import <objc/runtime.h>
#import <dlfcn.h>
#import <mach-o/ldsyms.h>
unsigned int count;
const char **classes;
Dl_info info;
dladdr(&_mh_execute_header, &info);
classes = objc_copyClassNamesForImage(info.dli_fname, &count);
for (int i = 0; i < count; i++) {
NSLog(@"Class name: %s", classes[i]);
Class class = NSClassFromString ([NSString stringWithCString:classes[i] encoding:NSUTF8StringEncoding]);
// Do something with class
}
我想知道*为什么*你想这样做。 – 2013-03-01 03:46:27