判断指针变量实际指向的对象可以是否为某个类、某个子类的实例,如下方法:
-(Bool)isKindOfClass:className 判断是否为对象是否为ClassName或其子类的实例
-(Bool)isSubclassOfClass:ClassName 判断是否为ClassName的子类实例
-(Bool)isMemberOfClass: ClassName 判断对象是否属于某个子类
//
// main.m
// 强制类型转换
//
// Created by mac on 14-11-29.
// Copyright (c) 2014 年 mac. All rights reserved.
//
// main.m
// 强制类型转换
//
// Created by mac on 14-11-29.
// Copyright (c) 2014 年 mac. All rights reserved.
//
#import
<Foundation/Foundation.h>
int
main(
int
argc,
const
char
* argv[]) {
@autoreleasepool {
@autoreleasepool {
// insert code here...
//
声明
hello
时使用
NSObject
类,则
hello
的编译时类型是
NSObject
,
// NSObject 是所有类的父类 , 但 hello 变量的实际类型是 NSString
NSObject * hello = @"Hello" ;
// 使用 isKindOfClass 判断该变量所指的对象是否为指定类、及其子类的实例
// NSObject 是所有类的父类 , 但 hello 变量的实际类型是 NSString
NSObject * hello = @"Hello" ;
// 使用 isKindOfClass 判断该变量所指的对象是否为指定类、及其子类的实例
NSLog(@"字符串是否是NSObject类的实例:%d"
, ([hello isKindOfClass:[NSObject class]]));
// 返回true。
NSLog(@"字符串是否是NSString类的实例:%d"
, ([hello isKindOfClass:[NSString class]]));
//
返回
false
。
NSLog(@"字符串是否是NSDate类的实例:%d"
, ([hello isKindOfClass:[NSDate class]]));
NSString
* a =
@"Hello"
;
// 返回 false
// 返回 false
NSLog(@"a是否是NSDate类的实例:%d"
, ([a isKindOfClass:[NSDate class]]));
}
return 0 ;
}
return 0 ;
}
===>>
2014-11-29 15:36:21.445
强制类型转换
[1155:303]
字符串是否是
NSObject
类的实例:
1
2014-11-29 15:36:21.445 强制类型转换 [1155:303] 字符串是否是 NSString 类的实例: 1
2014-11-29 15:36:21.445 强制类型转换 [1155:303] 字符串是否是 NSDate 类的实例: 0
2014-11-29 15:36:21.446 强制类型转换 [1155:303] a 是否是 NSDate 类的实例: 0
2014-11-29 15:36:21.445 强制类型转换 [1155:303] 字符串是否是 NSString 类的实例: 1
2014-11-29 15:36:21.445 强制类型转换 [1155:303] 字符串是否是 NSDate 类的实例: 0
2014-11-29 15:36:21.446 强制类型转换 [1155:303] a 是否是 NSDate 类的实例: 0
Program ended with exit code: 0