gpt4 book ai didi

ios - 为什么 methodLists 是指向 objc_class 中的指针的指针

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:21 25 4
gpt4 key购买 nike

方法列表和协议(protocol)都是链表,protocols是一个指针,而methodLists是一个指向指针的指针,为什么?

ocjc_class objc_method_list objc_protocol_list

最佳答案

这是一个实现细节,它是 Objective-C 的历史和动态向类添加方法的能力的结果。

具体来说,如果您查看 method_list 条目的内容,您会发现这些方法被分解为多个集合,其中每个集合包含对象上特定类别的所有方法。 IE。如果您的应用程序要使用五个方法在 UIView 上定义一个类别(不要那样做——糟糕的设计),那么您会发现这五个方法附加到单个 objc_method_list 中的 method_list 的末尾(这就是为什么method_list 条目是指针对齐的并且大小可变)。

这也扩展到动态添加方法。无需将一堆数据复制到现有方法数据结构的新分配副本中。相反,运行时可以只分配一个 objc_method_list 并将其推到链表的末尾(或头部——实现细节)。

关于ios - 为什么 methodLists 是指向 objc_class 中的指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27577719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com