1、共同點(diǎn):
都是NSObject的比較Class的方法,根據(jù)類的名稱判斷是否屬于這個(gè)類
2、區(qū)別:
以下的類層次是這樣的,BaseZombie是所有僵尸類的基類,ZombieType1是繼承于BaseZombie的一個(gè)類,textType是繼承于ZomboeType1的類
@interface BaseZombie : NSObject
@interface ZombieType1 : BaseZombie
@interface textType1 : ZombieType1
官方文檔說明isKindOfClass:
- (BOOL)isKindOfClass:(Class)aClass
Description
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. (required)
//意思是返回一個(gè)BOOL類型的值,表示調(diào)用該方法的類 是否是 參數(shù)類 或者 繼承于參數(shù)類
textType1 * text1 = [[textType1 alloc]init];//初始化一個(gè)測(cè)試子類
BOOL b1 = [text1 isKindOfClass:[textType1 class]];//YES
BOOL b2 = [text1 isKindOfClass:[ZombieType1 class]];//YES
官方文檔說明isMemberOfClass:
- (BOOL)isMemberOfClass:(Class)aClass
Description
Returns a Boolean value that indicates whether the receiver is an instance of a given class. (required)
//意思是返回一個(gè)BOOL類型的值,表示調(diào)用該方法的類 是否是 參數(shù)類
BOOL b3 = [text1 isMemberOfClass:[textType1 class]];//YES
BOOL b4 = [text1 isMemberOfClass:[ZombieType1 class]];//NO 父類不被承認(rèn)
官方文檔說明isSubClasssOfClass:
//注意這是一個(gè)類方法
+ (BOOL)isSubclassOfClass:(Class)aClass
Description
Returns a Boolean value that indicates whether the receiving class is a subclass of, or identical to, a given class.
//意思是返回一個(gè)BOOL類型的值,表示調(diào)用該方法的類 是不是 參數(shù)類的一個(gè)子類 或者 是這個(gè)類的本身
BOOL b5 = [textType1 isSubclassOfClass:[ZombieType1 class]];//YES
BOOL b6 = [textType1 isSubclassOfClass:[textType1 class]];//YES
BOOL b7 = [textType1 isSubclassOfClass:[NSString class]];//NO
綜上看來,isSubclassOfClass和isKindOfClass的作用基本上是一致的,只不過一個(gè)是類方法,一個(gè)是對(duì)象方法。
isKindOfClass來確定一個(gè)對(duì)象是否是一個(gè)類的成員,或者是派生自該類的成員,
isMemberOfClass只能確定一個(gè)對(duì)象是否是當(dāng)前類的成員.
isMemberOfClass 篩選條件更為苛刻,只有當(dāng)類型完全匹配的時(shí)候才會(huì)返回YES。