黑马程序员技术交流社区
标题:
动态类型检测的方法
[打印本页]
作者:
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