2013-03-01 2 views
4

런타임에 앱에로드 된 클래스 목록을 가져 오려고합니다. 나는 모든 수업에 관심이 없다. 나는 모든 클래스의리스트를 얻는 방법을 알고있다.하지만로드 된 번들에 있는지를 확인하면서 반복적으로 충돌이 발생 하는지를 반복하고, 그것을 수행하는 잔인한 방법처럼 보인다.iOS : 번들에 모든 클래스 가져 오기 또는로드 된 앱

NSLoadedClasses에 대한 참조를 보았지만 그 사실에 대해 아무 것도 찾을 수 없으며 iOS (Mac)에 해당하는지 잘 모르겠습니다. 이것을 얻는 올바른 방법은 무엇입니까? 다시 말하지만, 런타임에 필요합니다.

+0

왜 그런지 궁금합니다. –

답변

5

내가 알아 낸 것 같습니다. 이 작업을 수행해야하는 경우 다음과 같이하십시오.

#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 

} 
관련 문제