本帖最后由 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
|
|