oc方法签名(Method Signature)机制

方法签名

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标示

你可能感兴趣的:(oc方法签名(Method Signature)机制)