IOS 知識點總結(五)

  • IOS中的SEL和IMP

SEL:類成員方法的指針,但是不同於C語言的函數指針,函數指針世界保存了方法的地址,但是SEL保存的只是方法的編號。
IMP 一個函數的指針,保存了方法的地址;


每一個繼承於NSobject的類都能自動獲得runtime的支持,在這樣的類中,有一個isa指針,只想該類定義的數據結構體,這個結構體是編譯器編譯時爲類創建的,這個結構體中包括了指向父類定義的指針以及Dispatch table,dispatch table是一張SEL和IMP對應的表,SEL方法編號需要通過dispatch table找到對應的IMP,指針函數,拿到函數對應的地址,然後開始調用;

有了SEL這個中間過程,可以對一個編號和什麼方法映射做些操作,當函數的名稱相同,但是在不同的情況下,或者不同的類中所對應的IMP是不相同的,這個使用SEL就起作用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章