asigna un tipo de Objective-C type
, se puede obtener el encodingencoding
y tamaño size
del tipo fácilmente:¿Cómo se puede obtener el tamaño de un tipo para el que se tiene una codificación?
const char *encoding = @encode(type);
size_t size = sizeof(type);
Ponga un poco diferente, que tienen asignaciones
@encode: type_t -> const char *
sizeof: type_t -> size_t
Esto plantea dos cuestiones :
(1) Supongamos que en lugar de tener un tipo, solo tenemos una codificación. Sería bueno para obtener un mapeo
sizeofencodedtype: const char * -> size_t
tal que para cada type_ttype
tenemos que ya exista de
sizeofencodedtype(@encode(type)) = sizeof(type)
tal función? Si no, ¿cómo se puede construir uno?
(2) Lo ideal sería que podría invertir la @encode mapeo para hacer un mapeo
decode: const char * -> type_t
pero esto no parece ser posible ya que type_t no es un verdadero tipo C. Supongo que podría esperar @decode para agregar al idioma, pero eso no es muy realista ni sensible al tiempo. 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
¡Gracias! Esto es _exactamente_ lo que necesitaba. –
Pasé probablemente dos horas tratando de encontrar diferentes maneras de decir esto y me encontré con una pregunta de referencia. ¡Gracias! –