2009-08-15 27 views
10

如何獲取特定類的方法的列表?我試過使用<objc/runtime.h>中聲明的class_copyMethodList函數,但這只是給我實例方法。我也發現了一個函數,它給了我一個類方法的方法,但只有當我有選擇器的方法(class_getClassMethod)。獲取任意類的類方法列表

任何想法?

感謝,

戴夫

回答

11

class_copyMethodList返回傳入類的實例方法。類方法實際上是類的元類的實例方法。

對於class_copyMethodList,您的問題的解決方案包含在API Documentation中。

+0

完美,謝謝!我不能相信我錯過了這一點。 = P – 2009-08-15 20:40:05

19

使用元類。

#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); 
+3

因爲這是一個'copy'方法,所以當你完成它時,不要忘記'free(methods)'。無論您是否使用ARC-C分配都沒有引用計數,自動引用計數不會幫助您。 – Tommy 2014-08-27 15:42:53

+1

該文檔在導入路徑上似乎有些模糊,我使用了:#import prewett 2015-06-03 22:39:26