二、對象、類對象與元類對象
1、類對象和元類對象是什麼?兩者之間有什麼區別?
類對象存儲實例方法列表等信息;元類對象存儲類方法列表等信息。類對象通過isa指針可以找到元類對象。
2、類對象調用類方法時如果元類及祖先元類中都沒有該類方法,但是根類對象中有同名的實例方法,那麼該實例方法會被調用嗎?
會的。因爲元類對象最終繼承自根類對象。
三、消息傳遞
1、消息傳遞的函數說明
不同的是:後者是從當前對象的父類對象開始方法查找,但是攜帶的對象仍是當前實例對象。
2、消息傳遞過程
其中緩存查找是以SEL爲key,通過hash函數找到對應的bucket_t結構,進而得到其IMP指針。具體如下圖所示:
其中在當前類方法列表中查找過程爲:對已排序好的列表,採用二分查找算法查找方法對應執行函數;對沒有排序的列表採用一般遍歷方法查找方法對應的執行函數。
其中的父類逐級查找過程如下:
3、下面的面試題打印的信息是什麼
答案:都是Phone