夯实基础iOS面试题iOS底层

iOS面试题:runtime中,SEL、Method 和 IMP

2021-02-21  本文已影响0人  iOS心安

它们之间的关系可以这么解释:一个类(Class)持有一个分发表,在运行期分发消息,表中的每一个实体代表一个方法(Method),它的名字叫做选择子(SEL),对应着一种方法实现(IMP)。具体的分析如下

/// Method
struct objc_method {
    SEL method_name; 
    char *method_types;
    IMP method_imp;
 };
  • 方法名 method_name 类型为 SEL,前面提到过相同名字的方法即使在不同类中定义,它们的方法选择器也相同。
  • 方法类型 method_types 是个 char 指针,其实存储着方法的参数类型和返回值类型,即是 Type Encoding 编码。
  • method_imp 指向方法的实现,本质上是一个函数的指针,就是前面讲到的 Implementation

建了个群,群号: 711315161,大家一起交流学习。

上一篇下一篇

猜你喜欢

热点阅读