美文网首页
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