给定Objective-C类型 type
,一个人可以获得 编码 encoding
和大小 size
容易的类型:
const char *encoding = @encode(type);
size_t size = sizeof(type);
换句话说,我们有映射
@encode: type_t -> const char *
sizeof: type_t -> size_t
这提出了两个问题:
(1)假设我们只有一个编码,而不是一个类型。获得映射会很不错
sizeofencodedtype: const char * -> size_t
这样每个人 type_t type
我们有
sizeofencodedtype(@encode(type)) = sizeof(type)
这样的功能是否已经存在?如果没有,怎么可能建立一个?
(2)理想情况下我们可以反转 @encode 映射以进行映射
decode: const char * -> type_t
但这似乎不可能 type_t 不是真正的C类型。我想我可以等 @解码 要添加到语言中,但这不是很现实或时间敏感。但是,如果不能使用其编码在运行时实例化类型吗?