2009-08-15 1 views
10

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

Любые идеи?

Спасибо,

Dave

ответ

11

class_copyMethodList возвращает методы экземпляра пройденного класса. Методы класса - это фактически методы экземпляра метакласса класса.

Решение проблемы возникно в API Documentation по телефону class_copyMethodList.

+0

Отлично, спасибо! Не могу поверить, что я пропустил это. = P –

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

+1

Документация кажется немного нечеткой по пути импорта, я использовал: #import prewett

 Смежные вопросы

  • Нет связанных вопросов^_^