isKingofClass和isMemberOfClass的区别

- (BOOL)isKingOfClass:(Class)cls的底层源码如下:

- (BOOL)isKingOfClass:(Class)cls{
     for(Class tcls = [self class];tcls;tcls = tcls->superclass){
             if(tcls == cls) return YES;
     }
}
  • 如果要判断的实例对象等于传进去的cls或者是cls的子类,则返回YES,否则返回NO。

- (BOOL)isMemberOfClass:(Class)cls

- (BOOL)isMemberOfClass:(Class)cls{
       return [self class] == cls;
}
  • 如果要判断的实例对象是传进去的cls,则返回YES,否则返回NO。

+ (BOOL)isKingOfClass:(Class)cls的底层源码如下:

+ (BOOL)isKingOfClass:(Class)cls{
     for(Class tcls = object_getClass((id)self);tcls;tcls = tcls->superclass){
             if(tcls == cls) return YES;
     }
}
  • 如果要判断的类对象等于传进去的cls的元类或者是cls的元类的子类,则返回YES,否则返回NO。(右边放元类,则返回YES)

+ (BOOL)isMemberOfClass:(Class)cls

+ (BOOL)isMemberOfClass:(Class)cls{
       return  object_getClass((id)self) == cls;
}
  • 如果要判断的类是等于传进去的类的元类,则返回YES,否则返回NO。(右边放元类,则返回YES)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 2,146评论 0 9
  • 我们常常会听说 Objective-C 是一门动态语言,那么这个「动态」表现在哪呢?我想最主要的表现就是 Obje...
    Ethan_Struggle阅读 2,380评论 0 7
  • 转载自https://mp.weixin.qq.com/s/B4Z-7YQ8CMhZ0kCrxe3XAg 欲诚其意...
    碧玉小瑕阅读 662评论 1 1
  • Objective-C Objective-C是对C的扩充,它最初的设计目的是给C语言一个通过简单且直观的方式而实...
    ValienZh阅读 5,451评论 0 7
  • 已是初冬 长街上没几个行人 九路汽车 长叹了一口气 吹动一片叶 那叶在风中打了几个转 不知去向 我的爱人 从车上下...
    岛上君阅读 138评论 0 3

友情链接更多精彩内容