-(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例
稍微写详细了点,源自
-(BOOL) isMemberOfClass: classObj 判断是否是这个类的实例
//YES if ([teacher isKindOfClass:[Teacher class]]) { } //YES if ([teacher isKindOfClass:[Person class]]) { } //YES if ([teacher isKindOfClass:[NSObject class]]) { } //YES if ([teacher isMemberOfClass:[Teacher class]]) { } //NO if ([teacher isMemberOfClass:[Person class]]) { NSLog(@"teacher Person类的成员"); } //NO if ([teacher isMemberOfClass:[NSObject class]]) { }
判断对象类型2
-(BOOL) respondsToSelector: selector 判断实例是否有这样方法
+(BOOL) instancesRespondToSelector: 判断类是否有这个方法。此方法是类方法,不能用在类的对象
Test1.h
@interface Test1 : NSObject - (void)objectFun; + (void)classFun; @end
Test1.m
@implementation Test1 - (void)objectFun { NSLog(@"object function"); } + (void)classFun { NSLog(@"class function"); } @end
测试类:
BOOL flag;
flag = [Test1 instancesRespondToSelector:@selector(objectFun)]; //YES,flag = [Test1 instancesRespondToSelector:@selector(classFun)]; //NO//instancesRespondToSelector是一个类方法,用来判断该类是否有此实例方法,显然为第一个为YES,第二个为NO。
flag = [Test1 respondsToSelector:@selector(objectFun)]; //NOflag = [Test1 respondsToSelector:@selector(classFun)]; //YES//respondsToSelector既可以是类方法,又可以是实例方法。当作为类方法使用时,用来判断该类是否有此类方法,显然为第一个为NO,第二个为YES。
//respondsToSelector既可以是类方法,又可以是实例方法。当作为实例方法使用时,用来判断该类是否有此实例方法,显然为第一个为YES,第二个为NO。(此时,效果与instancesRespondToSelector一样)。Test1 *obj = [[Test1 alloc] init];flag = [obj respondsToSelector:@selector(objectFun)]; //YESflag = [obj respondsToSelector:@selector(classFun)]; //NO
http://www.tuicool.com/articles/ruQBfm
http://www.cnblogs.com/wayne23/p/3872776.html
本人自建的一个iOS交流群165332140,欢迎各位大神进群交流指导。