¿Cómo se puede obtener el tamaño de un tipo para el que se tiene una codificación?
Dado un Objective-C tipotype
, se puede obtener el codificación encoding
y tamañosize
del tipo fácilmente:
const char *encoding = @encode(type);
size_t size = sizeof(type);
Poner un poco diferente, tenemos asignaciones
@encode: type_t -> const char *
sizeof: type_t -> size_t
Esto plantea dos preguntas:
(1) Supongamos que, en lugar de tener un tipo, solo tenemos una codificación. Sería bueno obtener un mapeo
sizeofencodedtype: const char * -> size_t
que por cada type_t type
tenemos ese
sizeofencodedtype(@encode(type)) = sizeof(type)
¿Ya existe tal función? Si no, ¿cómo podría uno construir uno?
(2) Idealmente podríamos invertir el@codifica mapeo para hacer un mapeo
decode: const char * -> type_t
pero esto no parece ser posible ya que type_t no es un tipo C real. Supongo que podría esperar a@descodifica para agregar al lenguaje, pero eso no es muy realista o urgente. ¿Pero no debería ser posible crear una instancia de un tipo en tiempo de ejecución utilizando su codificación?
Referencias: Objective-C Runtime Programming Guide - Type Encodings