A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yibyli 中级黑马   /  2015-9-5 14:19  /  512 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对象在运行获取其类型的能力称为内省。内省可以有多种方法实现。
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类的子类

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马