instancesRespondToSelector与respondsToSelector的区别

Test1.h

@interface Test1 : NSObject

- (void)objectFun;

+ (void)classFun;

@end

Test1.m

@implementation Test1

- (void)objectFun
{
    NSLog(@"object function");
}

+ (void)classFun
{
    NSLog(@"class function");
}

@end

测试类:

BOOL flag;

flag = [Test1 instancesRespondToSelector:@selector(objectFun)]; //YES

flag = [Test1 instancesRespondToSelector:@selector(classFun)]; //NO

flag = [Test1 respondsToSelector:@selector(objectFun)]; //NO

flag = [Test1 respondsToSelector:@selector(classFun)]; //YES

Test1 *obj = [[Test1 alloc] init];

flag = [obj respondsToSelector:@selector(objectFun)]; //YES

flag = [obj respondsToSelector:@selector(classFun)]; //NO

总结:

  1. instancesRespondToSelector只能写在类名后面,respondsToSelector可以写在类名和实例名后面。

  2. [类 instancesRespondToSelector]判断的是该类的实例是否包含某方法,等效于:[该类的实例 respondsToSelector]。

  3. [类 respondsToSelector]用于判断是否包含某个类方法。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容