selector 是一个标识名字 选择子选择器 可以从字符串转化 都可以叫内部不一样
imp(implementation)定义:typedef id (*IMP)(id, SEL, ...) 是方法的真正实现 包含返回值 参数类型等
method: 定义:typedef struct objc_method *Method
/// Method
struct objc_method {
SEL method_name;
char *method_types;
IMP method_imp;
};
方法名 method_name 类型为 SEL,前面提到过相同名字的方法即使在不同类中定义,它们的方法选择器也相同。
方法类型 method_types 是个 char 指针,其实存储着方法的参数类型和返回值类型,即是 Type Encoding 编码。<V@: @(有对线参数返回值为void)>
method_imp 指向方法的实现,本质上是一个函数的指针
网友评论