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