方法的结构体
struct objc_method {
SEL method_name;
char *method_types;
IMP method_imp;
};
- 方法名 method_name 类型为 SEL,前面提到过相同名字的方法即使在不同类中定义,它们的方法选择器也相同。
- 方法类型 method_types 是个 char 指针,其实存储着方法的参数类型和返回值类型,即是 Type Encoding 编码。
- method_imp 指向方法的实现,本质上是一个函数的指针,就是前面讲到的 Implementation。
Selector,Method,IMP 它们之间的关系可以这么解释:
一个类(Class)持有一个分发表,在运行期分发消息,表中的每一个实体代表一个方法(Method),它的名字叫做选择子(SEL),对应着一种方法实现(IMP)
作者:蒋小飞
链接:https://www.jianshu.com/p/84d1771e9792
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。