方法签名
oc对方法的参数个数、参数类型以及返回值类型的描述,每个方法都有一个方法签名
假设有方法签名为"@@:@"
// 第一个@表示返回值类型为id,
// 第二个@表示的是函数的调用者类型,
// 第三个:表示 SEL
// 第四个@表示需要一个id类型的参数
oc获取方法签名的接口:
// Returns a string describing a method's parameter and return types.
OBJC_EXPORTconstchar*method_getTypeEncoding(Method m);
使用@encode将消息编码成字符串形式。
编码的格式按照 id objc_msgSend(id self,SEL selector, ...);
举例:
-(void)hello ========> v16@0:8
-(id)hello:(id)x========>@24@0:8@16
-(void)hello:(id)x :(id)e========>v32@0:8@16@24
v16,v32等表示返回类型为空
@16,@24,@32等表示返回值类型或参数类型为id类型
@0表示receiver类型为id
:8表示SEL标示
网友评论