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