类型的检测
1:对类型进行检测(其实就是去医院检测自己是不是自己或者儿子是不是自己亲生的,相当于做个DNA,只不过是用代码来实现)
a:检测一个对象是否属于一个类(Class)类型或者其子类类型
语法
[对象名 isKindOfClass:[类名 Class]]//关键词:isKindOfClass
例:
id p=[Person new];//首先实例化一个对象p(注:p前面不加*)
[p isKindOfClass:[Person Clsss]]//如果对象p属于Person类或者Person的子类,则返回 YES,不是则返回NO;
b:检测一个对象是否属于一个类(Class)类型,不包括其子类;
语法
[对象 isMemberOfClass:[类名 Class]];//关键词:isMemberOfClass
例:
id p=[Person];//实例化一个对象p;
[p ismemberOfClass:[Person Class]]//如果对象p属于Person类则返回YES,否则则返回 No;
c: 检测一个类是否是另一个类的本类或者其子类
语法:
[类名 isSubclassOfClass:[类名 Class]];//关键词:isSubclassOfClass
例:
[Student isSubclassOfClass:[Person Class]];//如果Student类是Person类的本类或者 其子类,则返回YES,否则返回No;
方法的检测
2:检测一个方法是不是属于一个对象或者一个类(实际上就是你老婆检查你两个兜有没有藏私房钱,,只不过用代码来实现)
a:检测一个对象是否有这个方法
语法:
[对象 respondsToSelector:SEl];
->[对象 respondsToSelector:@select(方法名)];//关键词:respondsToSelector
例:
Person *p=[Person new];//先实例化一个对象
[p respondsToSelector:@selector(Write)]//判断如果p对象例有Write方法,则返回YES, 否则返回NO;
b:检测一个类中是否有这个方法
语法
[类名 instancesRespondToSelector:SEL];//关键词:instancesRespondToSelector
->[类名 instancesRespondToSelector:@selector(方法名)];
例:
[Person instancesRespondToSelector:@selector(Write)];//判断如果Person类有Write 方法,则返回Yes,否则返回NO;