需要引用:
#import <Foundation/NSObjCRuntime.h>
#import <objc/runtime.h>
实现
Class currentClass=[Common class];
while (currentClass) {
unsigned int methodCount;
Method *methodList = class_copyMethodList(currentClass, &methodCount);
unsigned int i = 0;
for (; i < methodCount; i++) {
NSLog(@"%@ - %@", [NSString stringWithCString:class_getName(currentClass) encoding:NSUTF8StringEncoding], [NSString stringWithCString:sel_getName(method_getName(methodList[i])) encoding:NSUTF8StringEncoding]);
}
free(methodList);
currentClass = class_getSuperclass(currentClass);
}
(smking:我试过,确实可行,并且在objc/runtime.h以及帮助文档中搜class_copyMethodList,可以看到相当多的运行时方法,还有一个方法可以替换已有类的方法,在运行时过程中, 这就可以做到进行事件的截取,可以先通过遍历该类的方法,然后再替换某一个特别的方法,就可以使之失效的目的。)
转自:http://blog.sina.com.cn/s/blog_6d01cce30101e4ab.html