3

我正在尝试在运行时获取应用程序中加载的类列表。我不关心所有的类,只关心那些加载的。我知道如何获取所有类的列表,但是遍历它们以检查它们是否在加载的捆绑包中会导致随机崩溃,这似乎是一种矫枉过正的方法。

我已经看到对 NSLoadedClasses 的引用,但我真的找不到任何关于它的东西,而且我不确定它是否适用于 iOS(与 Mac 相比)。得到这个的正确方法是什么?同样,我在运行时需要它。

4

1 回答 1

4

看来我想通了。如果您需要这样做,请按以下步骤操作:

#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-01T03:35:58.940 回答