我们判断一个实例对象能否调用某个方法时,通常会用respondsToSelector:方法来检测。这个方法在NSObject协议中声明,NSObject类中实现。
那如何判断一个类是否能调用某个类方法呢?
实际上,如果了解Objective-C的类也是一个对象,即所谓的类对象的话,就知道我们同样可以用respondsToSelector:方法来做这个判断。
实例对象的类是类本身,而类对象的类是所谓的元类(Meta Class)。
例子:
实例对象
Test *test = [[Test alloc] init];
NSLog(@"%d",[test respondsToSelector:@selector(testInstanceMethod)]);-
类对象
NSLog(@"class mehtod %d",[Test respondsToSelector:@selector(testClassMethod)]);