<span style="font-size:12px;">#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Animal *ani = [Animal new];
Dog *dog = [Dog new];
// ani 是否是 Animal 类的实例对象
// 动态类型检测:
// 1. 判断类型
// 1)判断某个对象是否是类的实例对象,或者子类的实例对象(对象和类之间的关系)
// isKindOfClass使用格式:[对象 isKindOfClass 类对象];
BOOL isInstance = [ani isKindOfClass:[Animal class]];
NSLog(@"%d", isInstance);
// 2)isMemberOfClass 判断是否是指定类的实例对象(对象和类之间的关系)
// 格式:[对象 isMemberOfClass:类对象]
isInstance = [dog isMemberOfClass:[Animal class]];
NSLog(@"%d", isInstance);
// 3. 判断类是否是指定类的子类(类和类之间的关系)
// 格式:[类A isSubclassOfClass:类B];
// 判断类 A 是否是类B的子类 是 YES 不是 NO
BOOL isSub = [Dog isSubclassOfClass:[Animal class]];
// 通过对象来获取类对象
NSLog(@"isSub = %d", isSub);
isSub = [[dog class] isSubclassOfClass:[ani class]];
NSLog(@"isSub = %d", isSub);
}
return 0;
}
</span>