方法簽名
oc對方法的參數(shù)個數(shù)己儒、參數(shù)類型以及返回值類型的描述挨决,每個方法都有一個方法簽名
假設(shè)有方法簽名為"@@:@"
//? ? 第一個@表示返回值類型為id,
//? ? 第二個@表示的是函數(shù)的調(diào)用者類型,
//? ? 第三個:表示 SEL
//? ? 第四個@表示需要一個id類型的參數(shù)
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等表示返回值類型或參數(shù)類型為id類型
@0表示receiver類型為id
:8表示SEL標(biāo)示