Получить список методов класса для произвольного класса

Как я могу получить список методов класса для определенного класса? Я попытался использовать функцию class_copyMethodList, объявленную в <objc/runtime.h>, но это только дает мне методы экземпляра. Я также нашел функцию, которая дает мне метод для метода класса, но только если у меня есть селектор метода сначала (class_getClassMethod).

Любые идеи?

Спасибо,

Dave

Ответ 1

class_copyMethodList возвращает методы экземпляра переданного класса. Методы класса на самом деле представляют собой методы класса метакласса.

Решение вашей проблемы включено в Документация API для class_copyMethodList.

Ответ 2

Используйте метакласс.

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