黑马程序员技术交流社区
标题:
OC-动态类型检测-判断对象和类, 类和类之间的关系
[打印本页]
作者:
wangchao1992
时间:
2015-8-17 16:56
标题:
OC-动态类型检测-判断对象和类, 类和类之间的关系
本帖最后由 wangchao1992 于 2015-8-17 17:52 编辑
动态类型检测:
1、判断类型
1)
isKindOfClass
判断某个对象是否是类的实例对象,或者子类的实例对象
(对象和类)
isKindOfClass使用格式:[对象 isKindOfClass 类对象];
Animal *ani = [Animal new];
BOOL isInstance = [ani isKindOfClass:[Animal class]];
//1 ani是 Animal类的实例
Dog *dog = [Dog new];
isInstance = [dog isKindOfClass:[Animal class]];
// 1 dog是Animal子类Dog的实例对象,所以是1
2)
isMemberOfClass 判断对象是否是指定类的实例对象(对象和类)
格式: [对象 isMemberOfClass: 类对象]
Animal *ani = [Animal new];
isInstance = [dog isMemberOfClass:[Animal class]];
//0 dog不是我们 Animal类的实例
isInstance = [ani isMemberOfClass:[Animal class]];
//1 ani是 Animal类的实例
3) 、
判断类是否是指定类的子类(类和类之间的关系)
格式: [类A isSubclassOfClass:类B];
判断类A是否是类B的子类 是 YES 不是 NO
BOOL isSub = [Dog isSubclassOfClass:[Animal class]];
1 Dog 类继承自 Animal
Dog是Animal的子类
// 通过对象来获取类对象
isSub = [[dog class] isSubclassOfClass:[ani class]];
// 1 必须是 Class 类型
//使用类型获取类对象
isSub = [Dog isSubclassOfClass:[Animal class]];
// 1 Dog 是 Animal 的子类
Animal 头文件
#import <Foundation/Foundation.h>
@interface Animal : NSObject
-(void)run;
@end
Dog 头文件
#import "Animal.h"
@interface Dog : Animal
-(void)eat;
@end
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2