获取任意类的类方法列表

时间:2009-08-15 18:58:55

标签: objective-c cocoa objective-c-runtime

如何获取特定类的方法列表?我已经尝试使用class_copyMethodList中声明的<objc/runtime.h>函数,但这只是给我实例方法。我还找到了一个函数,它给了我一个类方法的方法,但前提是我首先有方法的选择器(class_getClassMethod)。

有什么想法吗?

谢谢,

戴夫

2 个答案:

答案 0 :(得分:21)

使用元类。

#import <objc/runtime.h>

int unsigned numMethods;
Method *methods = class_copyMethodList(objc_getMetaClass("NSArray"), &numMethods);
for (int i = 0; i < numMethods; i++) {
    NSLog(@"%@", NSStringFromSelector(method_getName(methods[i])));
}
free(methods);

答案 1 :(得分:14)

class_copyMethodList返回传递的类的实例方法。类方法实际上是类的元类的实例方法。

问题的解决方案包含在class_copyMethodList的{​​{3}}中。