方法的结构体

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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自www.cnblogs.com/andi0816/p/9686808.html
今日推荐