在iOS開發(fā)中,會(huì)遇到需要判斷一個(gè)對象是否為某類的對象,或者某個(gè)子類的對象.判斷方法大體有三個(gè)isKindOfClass,isSubclassOfClass和isMemberOfClass.他們的區(qū)別是什么呢?下面通過代碼來驗(yàn)證一下.
創(chuàng)建父子類關(guān)系的類對象#####
創(chuàng)建對象
測試1:isKindOfClass#####
isKindOfClass測試
isKindOfClass測試結(jié)果
測試2:isSubclassOfClass#####
isSubclassOfClass測試
isSubclassOfClass測試結(jié)果
測試3:isMemberOfClass#####
isMemberOfClass測試
測試結(jié)果
結(jié)果表明isSubclassOfClass和isKindOfClass的作用基本上是一致都是用來判斷一個(gè)對象或一個(gè)類是否為某個(gè)類或者某個(gè)類的子類.
isMemberOfClass 有所不同彼水,只有當(dāng)類型完全匹配的時(shí)候才會(huì)返回YES惩妇。
補(bǔ)充:附加測試(isMemberOfClass)
isMemberOfClass附加測試
測試結(jié)果
結(jié)果令人意外bool7為假,難道上面得出的結(jié)論是錯(cuò)誤的么?或者textArr不是 NSArray 類型的?打印了一下textArr 結(jié)果發(fā)現(xiàn)結(jié)果為
textArr類型為NSArray0
原來textArr 不是NSArray類型實(shí)例,通過不同方法實(shí)例化的array都是NSArray子類的實(shí)例楚昭,NSArray是一個(gè)抽象的基類奴烙。這種模式就是了類簇模式.