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