美文网首页
iOS isKindOfClass与isMemberOfClas

iOS isKindOfClass与isMemberOfClas

作者: Pandakingli | 来源:发表于2019-01-18 19:32 被阅读0次

先看一下官方文档的说法

isKindOfClass: Returns a Boolean value that indicates whether the receiver is
 an instance of given class or an instance of any class that inherits from that class.
//调用者是给定类的实例或者是给定类的子类的实例

isMemberOfClass: Returns a Boolean value that indicates 
whether the receiver is an instance of a given class.
//调用者是否是给定类的实例

然后看一道题目:

BOOL res1 = [(id)[NSObject class] isKindOfClass:[NSObject class]];
BOOL res2 = [(id)[NSObject class] isMemberOfClass:[NSObject class]];
BOOL res3 = [(id)[xxObj class] isKindOfClass:[xxObj class]];
BOOL res4 = [(id)[xxObj class] isMemberOfClass:[xxObj class]];

答案是:YES / NO / NO / NO

<NSObject>协议有一套类方法的隐藏实现,所以编译运行正常;
由于NSObject meta class的父类为NSObject class,所以只有第一句为YES
看一下图就明白了:


class-meta class

相关文章

网友评论

      本文标题:iOS isKindOfClass与isMemberOfClas

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