黑马程序员技术交流社区

标题: 动态类型检测的方法 [打印本页]

作者: yibyli    时间: 2015-9-5 14:19
标题: 动态类型检测的方法
对象在运行获取其类型的能力称为内省。内省可以有多种方法实现。
1)
(BOOL)isKindOfClass:classObj     判断实例对象是否是这个类或者这个类的子类的实例。
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *str = @"123";
        if([str isKindOfClass:[NSObject class]])
        {
            NSLog(@"str 是NSObject类的子类实例对象");
        }
    }
    return 0;
}
2015-09-05 14:04:48.743 test111[415:5614] str 是NSObject类的子类实例对象

2)
(BOOL)isMemberOfClass:classObj      判断是否是这个类的实例,不包括它的子类
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *str = @"123";
        if(![str isMemberOfClass:[NSObject class]])
        {
            NSLog(@"str 不是NSObject类的实例对象");
        }
    }
    return 0;
}
2015-09-05 14:09:51.904 test111[437:7535] str 不是是NSObject类的实例对象

3)
(BOOL)isSubclassOfClass:classObj         判断类是否是指定的子类
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        if([NSString isSubclassOfClass:[NSObject class]])
        {
            NSLog(@"NSString是 NSObject类的子类");
        }
    }
    return 0;
}
2015-09-05 14:13:26.113 test111[452:8601] NSString是 NSObject类的子类




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2