动态类型的检测

来源:互联网 发布:域名邮箱 编辑:程序博客网 时间:2024/05/29 16:54
<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>

0 0