isa指針superclass

isa指針的指向

實例對象的isa指針指向類對象

類對象的isa指針指向元類對象

isa的作用就是用來給實例找到各自的類對象的

實例的isa指向自己的類對象,類對象的isa指向元類對象,元類對象的isa指向的是基類對象(student person 這樣的類的元類對象的isa都是指向NSobject,并不是說student的元類對象就指向Person的元類對象,這是錯誤的)

superClass指針的指向

1、每個類對象都有一個superclass指針,這個指針的作用是為了幫助類找到自己的父類,比如實例對象 如果調(diào)用父類的方法,那么就是實例對象首先通過isa指針找到自己的類對象,然后在類對象中找到相應(yīng)的方法,如果沒找到,通過該類對象的superclass指針找到其父類的類對象尋找方法,一層一層往上找

2、元類對象的superclass指針指向的是父類的元類對象,類的superclass指針指向的是父類的類對象

3、如果你是找對象方法,那superclass就是在類對象中一層一層往上找,如果你找的是類方法,那就是superclass在元類對象中一層一層往上找,因為類方法存放在元類對象中

4、每個類對象都有自己的元類對象,比如student有自己的元類對象,person也有自己的元類對象,他們不是同一個

5、類對象的superclass指向的是父類的類對象,最后指向基類的類對象,由于基類沒有父類,所以基類的superclass指向nil

6、元類的superclass指向父類的元類對象,但是基類的元類對象沒有父類,所以基類的元類對象的superclass、指向的是基類的類對象

方法軌跡:

1、對象方法

根據(jù)isa指針找到自己的類對象,如果沒有該對象方法,通過類的superclsass指針找父類的對象方法,直到基類,如果還沒有,那就方法沒找到,報錯

2類方法

根據(jù)isa指針找到自己的元類對象,如果元類對象沒有該類方法,就通過superclass指針找父類的元類,如果還沒有,就一直找到基類的元類對象,如果還沒有? 注意,這里會去找基類的類對象中找,(類對象中存放的都是對象方法,蘋果就是這么設(shè)計的),如果再沒有,就會報錯,沒找到方法

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

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

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,041評論 0 9
  • 最開始讓我有疑問的是在使用類方法,在控制臺下仍然發(fā)現(xiàn)Class對應(yīng)的有地址,類沒有初始化,為什么會有地址?這個地址...
    轟炸機上調(diào)雞尾酒閱讀 426評論 0 0
  • 一,認識isa指針 首先我們要明確一點:在OC中,任何類的定義都是對象,類和類的實例在本質(zhì)上沒有區(qū)別,任何對象都有...
    舒城8中閱讀 2,341評論 0 7
  • instance的isa指向class當調(diào)用對象方法時,通過instance的isa找到class,最后找到對象方...
    斑駁的流年無法釋懷閱讀 411評論 0 3
  • 數(shù)據(jù)顯示,我國目前確診的糖尿病患者已達1.1億,更為可怕的是,全球成年人中約有一半處于糖尿病前期,也就是說這些人已...
    財知道閱讀 1,727評論 0 0

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