@encode
2016-10-25 本文已影响28人
ibingewin
1.概述:
为了辅助runtime系统,编译器会把方法中的返回值和参数类型编码为一个字符串,并把字符串与方法选择器相关联。编码体制在其他情况下也非常有用,可以直接用@encode(),给定一个类型,@encode()会返回对该类型编码的一个字符串。给定类型可以是基础类型,如:int,指针,union,struct,或者任何类型的类名。实际上,也可以作为sizeof()操作器的参数。
2.编码表
下表列举了类型对应的编码,需要注意的是:当对对象archive或distribution时,许多类型的编码会重叠。当自己写编码器(可以参考NSCoder类)的时候,此编码列表就不再适用。
注意:当用于声明协议中的方法时,runtime系统会用额外的编码作为类型标志符,如下表所示