Objective-C学习手册

isSubclassOf,isMemberOf,isKindOf

2016-07-30  本文已影响306人  Bestmer

前言

许多有多年工作经验的朋友,可能都还没有真正弄清楚这三个方法的具体使用环境,只是写代码的时候,知道它们的作用是根据类名(对象名)判断是否属于这个类,但实际上这三个方法在细节上还是有一些区别的。下面是我做的分析:


@interface Grandpa : NSObject
@interface Father : Grandpa
@interface Son : Father
    BOOL result1 = [Son isSubclassOfClass:[Son class]];  //  YES
    BOOL result2 = [Son isSubclassOfClass:[Father class]];//  YES
    BOOL result3 = [Son isSubclssOfClass:[Grandpa class]];//  YES
    BOOL result4 = [Son isSubclassOfClass:[NSArray class]];// NO
@interface Grandpa : NSObject
@interface Father : Grandpa
@interface Son : Father    
    Father *fatehr = [[Father alloc]init];
    BOOL result5 = [fatehr isMemberOfClass:[Father class]];//  YES
    BOOL result6 = [fatehr isMemberOfClass:[Grandpa class]];//  NO 父类不被承认
    BOOL result7 = [fatehr isMemberOfClass:[NSArray class]];//  NO
@interface Grandpa : NSObject
@interface Father : Grandpa
@interface Son : Father
    Son *son = [[Son alloc]init];
    BOOL result8 = [son isKindOfClass:[Son class]];//  YES
    BOOL result9 = [son isKindOfClass:[Father class]];//  YES 继承于父类被承认
    BOOL result10 = [son isKindOfClass:[Grandpa class]];// YES 继承于爷爷类,也被承认
    BOOL result11 = [son isKindOfClass:[NSArray class]];//  NO

总结:

上一篇 下一篇

猜你喜欢

热点阅读