isKindOfClass、isMemberOfClass和isSubClasssOfClass

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。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容