Вы можете сделать это, и это очень хорошо задокументировано на https://developer.apple.com/library/mac/documentation/cocoa/Reference/ObjCRuntimeRef/index.html
Чтобы получить все методы экземпляра или класса класса, вы можете использовать class_copyMethodList
и перебрать результаты. Пример:
#import <objc/runtime.h>
/**
* Gets a list of all methods on a class (or metaclass)
* and dumps some properties of each
*
* @param clz the class or metaclass to investigate
*/
void DumpObjcMethods(Class clz) {
unsigned int methodCount = 0;
Method *methods = class_copyMethodList(clz, &methodCount);
printf("Found %d methods on '%s'\n", methodCount, class_getName(clz));
for (unsigned int i = 0; i < methodCount; i++) {
Method method = methods[i];
printf("\t'%s' has method named '%s' of encoding '%s'\n",
class_getName(clz),
sel_getName(method_getName(method)),
method_getTypeEncoding(method));
/**
* Or do whatever you need here...
*/
}
free(methods);
}
Вам нужно будет сделать два отдельных вызова этого метода. Один для методов экземпляра, а другой для методов класса:
/**
* This will dump all the instance methods
*/
DumpObjcMethods(yourClass);
Вызов этого же метакласса даст вам все методы класса
/**
* Calling the same on the metaclass gives you
* the class methods
*/
DumpObjcMethods(object_getClass(yourClass) /* Metaclass */);