第5章:運行時相關技術特性——二、對象、類對象與元類對象;三、消息傳遞

二、對象、類對象與元類對象

     1、類對象和元類對象是什麼?兩者之間有什麼區別?

類對象存儲實例方法列表等信息;元類對象存儲類方法列表等信息。類對象通過isa指針可以找到元類對象。

     2、類對象調用類方法時如果元類及祖先元類中都沒有該類方法,但是根類對象中有同名的實例方法,那麼該實例方法會被調用嗎?

會的。因爲元類對象最終繼承自根類對象。

 

三、消息傳遞

     1、消息傳遞的函數說明

不同的是:後者是從當前對象的父類對象開始方法查找,但是攜帶的對象仍是當前實例對象。

     2、消息傳遞過程

其中緩存查找是以SEL爲key,通過hash函數找到對應的bucket_t結構,進而得到其IMP指針。具體如下圖所示:

其中在當前類方法列表中查找過程爲:對已排序好的列表,採用二分查找算法查找方法對應執行函數;對沒有排序的列表採用一般遍歷方法查找方法對應的執行函數。

其中的父類逐級查找過程如下:

     3、下面的面試題打印的信息是什麼

答案:都是Phone

 

 

 

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