isMemberOfClass : 表示調(diào)用該方法的類 是否是 參數(shù)類,只有當(dāng)類型完全匹配的時(shí)候才會(huì)返回YES。
isKindOfClass :表示調(diào)用該方法的類 是否是 參數(shù)類 或者 繼承于參數(shù)類
isSubclassOfClass :表示調(diào)用該方法的類 是不是 參數(shù)類的一個(gè)子類 或者 是這個(gè)類的本身
isSubclassOfClass和isKindOfClass的作用基本上是一致的送挑,只不過一個(gè)是類方法,一個(gè)是對(duì)象方法午笛。
-(BOOL) isKindOfClass: classObj判斷是否是這個(gè)類或者這個(gè)類的子類的實(shí)例
-(BOOL) isMemberOfClass: classObj 判斷是否是這個(gè)類的實(shí)例
//1.首先申明 四個(gè)類 A>B>C>D 渣刷,繼承關(guān)系 A繼承B,B繼承C,C繼承D廉嚼。即D是最頂層的父類玫镐,A是最基層的子類。
A *a = [[A alloc]init];
2.isKindOfClass(對(duì)象方法)
[a isKindOfClass [A Class]] //return YES
[a isKindOfClass [B Class]] //return YES
[a isKindOfClass [C Class]] //return YES
[a isKindOfClass [D Class]] //return YES
3.isMemberOfClass(對(duì)象方法)
[a isMemberOfClass [A Class]] //return YES
[a isMemberOfClass [B Class]] //return NO
[a isMemberOfClass [C Class]] //return NO
[a isMemberOfClass [D Class]] //return NO
4.isSubclassOfClass(類方法)
[A isSubclassOfClass [A Class]] //return YES
[A isSubclassOfClass [B Class]] //return YES
[A isSubclassOfClass [C Class]] //return YES
[A isSubclassOfClass [D Class]] //return YES
5.總結(jié)
綜上看來怠噪,isSubclassOfClass和isKindOfClass的作用基本上是一致的恐似,只不過一個(gè)是類方法,一個(gè)是對(duì)象方法傍念。
isMemberOfClass 篩選條件更為苛刻矫夷,只有當(dāng)類型完全匹配的時(shí)候才會(huì)返回YES葛闷。
//鏈接:http://www.reibang.com/p/3a2b9dc1ac44
參考:
http://www.reibang.com/p/3a2b9dc1ac44
https://blog.csdn.net/runintolove/article/details/48971275
http://www.reibang.com/p/47f53e9e3a64
https://www.linuxidc.com/Linux/2012-07/64453.htm