Hai solo bisogno di ottenere un elenco dei metodi e cercare quello che si desidera:
#import <objc/runtime.h>
BOOL hasMethod(Class cls, SEL sel) {
unsigned int methodCount;
Method *methods = class_copyMethodList(cls, &methodCount);
BOOL result = NO;
for (unsigned int i = 0; i < methodCount; ++i) {
if (method_getName(methods[i]) == sel) {
result = YES;
break;
}
}
free(methods);
return result;
}
class_copyMethodList
restituisce solo i metodi che sono definiti direttamente sulla classe in questione, non superclassi, in modo che dovrebbe sii cosa intendi
Se sono necessari metodi di classe, utilizzare class_copyMethodList(object_getClass(cls), &count)
.
fonte
2015-04-22 21:51:15
Si prega di chiarire. Stai parlando di cercare qualcosa nella documentazione? Una sorta di controllo di runtime? Che cosa? – rmaddy
@rmaddy Sta chiedendo chiaramente se verificare se una sottoclasse contiene un'implementazione personalizzata di un metodo dichiarato nella sua superclasse. E la domanda contiene anche il tag runtime oggettivo. –
@DominikHadl Sì, è esattamente quello che voglio. Voglio farlo in runtime. Supponiamo che non disponga di documentazione per la suddetta classe. – cfischer