method_t

method_t是对方法\函数的封装

///

struct method_t {

  SEL name;  //函数名

  const  char  * types;//编码(返回值类型,参数类型)

  IMP imp;//指向函数指针(函数地址)

}

///

IMP代表函数的具体实现

typedef  id _Nullable (*IMP)(id  _Nonnull,  SEL  _Nonnull,...);

SEL代表方法\函数名,一般叫做选择器,底层结构跟char*类似

可以通过@selector()和sel_registerName()获得

可以通过sel_getName()和NSStringFromSeletor()转成字符串

不同类中相同名字的方法,所对应的方法选择器是相同的

typedef struct  objc_seletor  *SEL;

types包含了函数返回值,参数编码的字符串

返回值 ,参数1,参数2.........

iOS中提供了一个叫做@encode的指令,可以将具体的类型表示成字符串编码

你可能感兴趣的:(method_t)