美文网首页
isKindOfClass: / isMemberOfClas

isKindOfClass: / isMemberOfClas

作者: a2ebcc3676c1 | 来源:发表于2017-02-28 12:08 被阅读33次

如果多个子类继承一个父类,在某些场景中可能遇到需要判断子类的类型

1、已知父类 Father,子类 Son1Son2

Son1 * s1 = [[Son1 alloc] init];

[s1 isKindOfClass:[Father class]]       //返回 YES
[s1 isKindOfClass:[Son2 class]]         //返回 YES

[s1 isMemberOfClass:[Father class]]      //返回 NO
[s1 isMemberOfClass:[Son2 class]]        //返回 NO
[s1 isMemberOfClass:[Son1 class]]        //返回 YES
  • isKindOfClass: 对比的是该子类的父类类型
  • isMemberOfClass: 对比的是该子类的类型

2、下面打印的是什么


  • 答案:两个都是子类的类型
  • 这里的super仅仅是一个编译指示器,并不是一个对象,[super class]的本质还是让当前对象调用父类的class方法。

相关文章

网友评论

      本文标题:isKindOfClass: / isMemberOfClas

      本文链接:https://www.haomeiwen.com/subject/hcdxgttx.html