isKindOfClass :
kind,表示一个种类,如:子类是父类的一种,是类的家族。其实现如下:
- (BOOL)isKindOf:aClass
{
Class cls;
for (cls = isa; cls; cls = cls->superclass) //从自己的元类开始,顺着父类往上找
if (cls == (Class)aClass)
return YES;
return NO;
}
isMemberOfClass:
member,表示一个成员,如:类的对象属于该类型,是对象的家族。实现如下:
- (BOOL)isMemberOf:aClass
{
return isa == (Class)aClass;
}
PS:NSObject 的 superClass 为 nil,isa为 NSObject 的元类;
NSObject 元类的 superClass 为 NSObject ,isa 为本身(NSObject 元类)
盗图一张来说明此关系: