iOS instancesRespondToSelector与respondsToSelector的区别

释放双眼,带上耳机,听听看~!

instancesRespondToSelector与respondsToSelector的区别

大多数时候用到的都是respondsToSelector这方法, 很少用到instancesRespondToSelector, 所以对instancesRespondToSelector了解甚少, 网上爬了下, 做了个总结:

  • instancesRespondToSelector 类方法, 只能写在类名后面, 参数为对象方法
  • respondsToSelector实例方法和类方法, 可以写在类名和实例名后面, 后面跟的参数是不同的
        Class class = [self class];
        class object = [[class alloc] init];
- (void)objectFun {};
+ (void)classFun {};
[class instancesRespondToSelector:@selector(objectFun)]; ✅
[class instancesRespondToSelector:@selector(classFun)]; ❎
[class respondsToSelector:@selector(objectFun)]; ❎
[class respondsToSelector:@selector(classFun)]; ✅
[obj respondsToSelector:@selector(objectFun)];✅
[obj respondsToSelector:@selector(objectFun)];❎

总之:
1. 类方法只能用 respondsToSelector:做判断
2. 实例方法既能用respondsToSelector:做判断, 也能用instancesRespondToSelector:做判断

换而言之:
1. 对象只能通过respondsToSelector:判断实例方法
2. 类则可通过respondsToSelector:判断类方法, 通过instancesRespondToSelector判断实例方法

人已赞赏
iOS文章

iOS忽略编译警告

2020-3-4 8:08:36

iOS文章

获取iOS应用当前版本宏定义

2020-3-4 9:55:42

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索