OC判断对象类型

-(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;

//instancesRespondToSelector是一个类方法,用来判断该类是否有此实例方法,显然为第一个为YES,第二个为NO。
flag = [Test1 instancesRespondToSelector:@selector(objectFun)]; //YES,flag = [Test1 instancesRespondToSelector:@selector(classFun)]; //NO


//respondsToSelector既可以是类方法,又可以是实例方法。当作为类方法使用时,用来判断该类是否有此类方法,显然为第一个为NO,第二个为YES。
flag = [Test1 respondsToSelector:@selector(objectFun)]; //NOflag = [Test1 respondsToSelector:@selector(classFun)]; //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,欢迎各位大神进群交流指导。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaozhima-dun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值