2014-12-20 88 views

回答

3

這是一個實現細節,那就是從如何Objective-C的兩種歷史和能力的動態方法添加到類的後果。

具體來說,如果您查看method_list條目的內容,您會發現這些方法被分解爲集合,其中每個集合都包含對象上特定類別的所有方法。即如果您的應用程序使用五種方法在UIView上定義了一個類別(不要那麼做 - 糟糕的設計),那麼您會發現這五種方法都綁定在method_list的末尾,並放在一個objc_method_list中(這就是爲什麼method_list條目是指針對齊和可變大小)。

這也延伸到動態添加方法。不需要將一堆數據複製到現有方法數據結構的新分配副本中。相反,運行時可以只分配一個objc_method_list並將其放在鏈表的末尾(或在頭部 - 實現細節處)。