🪐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的指令,可以将具体的类型表示成字符串编码
网友评论