iOS下isMemberOfClass和isKindOfClass的區(qū)別

關(guān)于面試中經(jīng)常會(huì)問(wèn)到isMemberOfClass和isKindOfClass區(qū)別,大家可能都能回答出一一二二,但是為什么這樣呢?下面我們來(lái)一起探討一下。

首先我們看一下isMemberOfClass 的底層實(shí)現(xiàn):

isMemberOfClass下類(lèi)方法和實(shí)例方法的底層實(shí)現(xiàn)
object_getClass 底層實(shí)現(xiàn)

從上圖我們不難看出?isMemberOfClass 方法在底層進(jìn)行調(diào)用時(shí),就是對(duì)類(lèi)的本身進(jìn)行一個(gè)判斷,也就是說(shuō)不會(huì)進(jìn)行更多的操作。

下面我們看一下isKindOfClass的底層實(shí)現(xiàn):


isKindOfClass下類(lèi)方法和實(shí)例方法的底層實(shí)現(xiàn)

從上述代碼片段我們不難看出,isKindOfClass的判斷不僅僅是判斷是當(dāng)前類(lèi),還會(huì)逐級(jí)的根據(jù)繼承關(guān)系向上查找,在類(lèi)方法下會(huì)一直進(jìn)行查找直到根元類(lèi),在對(duì)象方法中則會(huì)一直查找到基類(lèi)。

以上就是個(gè)人理解的二者的區(qū)別,如有錯(cuò)誤,敬請(qǐng)指出。

?著作權(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)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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