isMemberClass与isKindOfClass区别

看着这两个方法好像都一样,但是咱仔细想想一个是判断是不是成员,另一个是判断是不是类。看看苹果是怎么说的:

isKindOfClass:

官方解释:Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class.

isMemberOfClass:

官方解释:Returns a Boolean value that indicates whether the receiver is an instance of a given class.

 翻译下就是

isKindOfClass:  返回一个是否是你要给定类的一个实例或者是这个类继承的类的实例的一个布尔值

isMemberClass:返回一个是否是给定类的一个实例的一个布尔值

这样就很好理解了。看下边你会更好理解了:

使用:

这里有两个类,分别是继承于NSObject的Car,Car的BMW.

#import <Foundation/Foundation.h>   
  
@interface Car : NSObject  
{  
    NSString *name;  
}  
-(void)setName:(NSString*)n;  
  
@end  

 
#import "Car.h"   
  
@implementation Car  
-(void)setName:(NSString *)n  
{  
    name = n;  
}  
  
@end

#import "Car.h"   
  
@interface BMW : Car  
  
-(void)drive;  
  
@end  
 
#import "BMW.h"   
  
@implementation BMW  
-(void)drive  
{  
    NSLog(@"我喜欢BMW");  
}  
@end

使用isKindOfClass的例子:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
Car *car = [[Car alloc] init];  
BMW *bmw = [[BMW alloc] init];  
  
//YES   
if ([bmw isKindOfClass:[BMW class]]) {  
    NSLog(@"bmw 是 BMW类或BMW的子类");  
}  
//YES   
if ([bmw isKindOfClass:[Car class]]) {  
    NSLog(@"bmw 是 Car类或Car的子类");  
}  
//YES   
if ([bmw isKindOfClass:[NSObject class]]) {  
    NSLog(@"bmw 是 NSObject类或NSObject的子类");  
}  
[car release];  
[bmw release];  
[pool release];
输出结果:
2016-07-10 14:34:17.315 ObjectiveCTest[2595:f803] bmw 是 BMW类或BMW的子类

2016-07-10 14:34:17.316 ObjectiveCTest[2595:f803] bmw 是 Car类或Car的子类

2016-07-10 14:34:17.316 ObjectiveCTest[2595:f803] bmw 是 NSObject类或NSObject的子类

使用isMemberOfClass的例子:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
   Car *car = [[Car alloc] init];  
   BMW *bmw = [[BMW alloc] init];  
     
   //YES   
   if ([bmw isMemberOfClass:[BMW class]]) {  
        NSLog(@"bmw BMW类的成员");  
   }  
   //NO   
   if ([bmw isMemberOfClass:[Car class]]) {  
       NSLog(@"bmw Car类的成员");  
   }  
   //NO   
   if ([bmw isMemberOfClass:[NSObject class]]) {  
       NSLog(@"bmw NSObject类的成员");  
   }  
   [car release];  
   [bmw release];  
   [pool release];

输出结果:
2016-07-10 14:23:07.965 ObjectiveCTest[2460:f803] bmw BMW类的成员

Hope To Help You!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值