Я хотел бы знать, реализует ли экземпляр определенный метод.Я мог бы использовать respondsToSelector:
, но он возвращает YES, если экземпляр наследует метод ...
Я мог бы пройтись по методам class_copyMethodList()
, но, так как я мог бы хотеть проверить много экземпляров, я хотелузнать, было ли более простое решение (например, repondsToSelector:
, но ограничено самим классом ...)
edit: так как я действительно думаю, что нет функции или метода, делающего это, я написал свой.Спасибо за ваши ответы, вот метод, если он может быть полезным:
+ (BOOL)class:(Class)aClass implementsSelector:(SEL)aSelector
{
Method *methods;
unsigned int count;
unsigned int i;
methods = class_copyMethodList(aClass, &count);
BOOL implementsSelector = NO;
for (i = 0; i < count; i++) {
if (sel_isEqual(method_getName(methods[i]), aSelector)) {
implementsSelector = YES;
break;
}
}
free(methods);
return implementsSelector;
}