isKindOfClass 表示是否是同一类型的 子类和父类
isMemberOfClass 表示 是否是这个类的对象 【范围小】
Student *testStu = Student.new;
Person *testPer = Person.new;
////> 对象是否是哪个类
BOOL res5 = [testStu isKindOfClass:[Person class]]; // 1
BOOL res6 = [testPer isMemberOfClass:[Person class]]; //1
BOOL res7 = [testStu isKindOfClass:[Student class]]; // 1
BOOL res8 = [testPer isMemberOfClass:[Student class]]; //0
NSArray *arrr = [NSArray array];
NSMutableArray *mArrr = [NSMutableArray array];
BOOL res7 = [arrr isKindOfClass:[NSArray class]]; //0
BOOL res8 = [mArrr isMemberOfClass:[NSArray class]]; //0
注意:各种查询得出的结论是:NSArray、NSMutableArray NSString NSDictionary属于类簇,使用isMemberOfClass不能取到正确的结果。
原因是:由于类簇的性质,这类对象实际返回的实例有不确定性。
NSArray对象可能会在运行时发现其实运作的是NSCFArray(来自Core Foundation框架(C语言的实现版本),很多Cocoa对象都是如此做桥接的)
总之对于类簇的判断要谨慎。