objective-c - 什么是结构 objc_class 的 methodLists 属性?

标签 objective-c objective-c-runtime

查看runtime.h里面,找到了objc_class这个结构体的定义。

在各种成员中,我们有这个:-

结构 objc_method_list **methodLists

我们肯定需要知道一个类有哪些所有方法, 但是方法列表应该没问题,但为什么我们有“列表”?

为什么不只是一个列表?

此外,任何人都可以指定,方法是从该列表的父类(super class)部分继承的,还是我们通过指向父类结构的父类(super class)指针获取它们。

最佳答案

这是我对 struct objc_method_list **methodLists 的详细调查:http://blog.csdn.net/jasonblog/article/details/7303618

简而言之,methodLists 默认存储实例方法的 SEL-IMP 映射。在这种情况下,它只有一个列表。

正如名称“methodLists”所暗示的那样,它可以包含多个列表。如果你给一个类添加了一个类别,运行时系统会在methodLists中多插入一个列表,指向该类别的方法列表。

几个月前我试图回答这个问题,但当时由于网络问题所以放弃了我的回答。现在我又遇到它了:)

关于objective-c - 什么是结构 objc_class 的 methodLists 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8847146/

相关文章:

ios - MKMapView 不填充 View (iOS)

objective-c - object_setClass 到更大的类

objective-c - 程序集 Objective-C 类分配错误

Objective-C:检索 Class 实例的父类(super class)的首选方法

objective-c - 获取 Objective-C 类或实例的所有方法

iphone - 限制 iPhone UITextField 上的字符输入

ios - 当我点击 ios 中的 View 时如何关闭 tableviewcell 中的操作表

objective-c - 为什么我们不能将 C 字符串用作 SEL?

objective-c - 在 iOS 中播放整个程序中重复的声音

ios - UITableView estimatedRowHeight 在重新加载时更改其偏移量