类对象和实例对象如何判断能否调用某个方法

我们判断一个实例对象能否调用某个方法时,通常会用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)]);
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容