类型编码 - ShenYj/ShenYj.github.io GitHub Wiki
Objective-C 类型编码

重要信息:
Objective-C不支持long double类型。@encode(long double)返回d,这与double编码相同。
Objective-C 方法编码

当研究底层实现的时候可以察觉到,方法sel采用的是一种简式表达方式,我们可以使用@encode()来获取这种各种类型的Encodings
char *buf1 = @encode(int **);
char *buf2 = @encode(struct key);
char *buf3 = @encode(Rectangle);e.g.
- (void)say { }
{(struct objc_selector *)"say", "v16@0:8", (void *)_I_HRTest_say1} -
v: 返回值,当前方法返回值为空 -
16:后面参数共占用16字节内存空间 -
@: 代表第一个参数self(每一个方法都会有一个默认参数self) -
0: 第一个参数从第0号位置开始 -
:: 代表一个SEL,即方法编号 -
8: SEL从第8号位置开始
其他描述信息可以参考苹果原文 Type Encodings