object_getInstanceVariable funciona para float, int, bool, pero no para double?

Tengoobject_getInstanceVariable trabajar comoaquí Sin embargo, parece que solo funciona para flotadores, bools y ints no dobles. Sospecho que estoy haciendo algo mal pero he estado yendo en círculos con esto.

float myFloatValue;
float someFloat = 2.123f;
object_getInstanceVariable(self, "someFloat", (void*)&myFloatValue);

funciona, y myFloatValue = 2.123

pero cuando lo intento

double myDoubleValue;
double someDouble = 2.123f;
object_getInstanceVariable(self, "someDouble", (void*)&myDoubleValue);

yo obtengomyDoubleValue = 0. Si trato de configurarmyDoubleValue antes de la función por ej.double myDoubleValue = 1.2f, el valor no cambia cuando lo leo después deobject_getInstanceVariable llamada. AjustemyIntValue a algún otro valor antes de lagetinstancevar La función anterior devuelve 2 como debería, es decir. se ha cambiado

entonces lo intenté

Ivar tmpIvar = object_getInstanceVariable(self, "someDouble", (void*)&myDoubleValue);

Si lo hagoivar_getName(tmpIvar) Me sale "someDouble", peromyDoubuleValue = 0 ¡todavía! Entonces tratoivar_getTypeEncoding(tmpIvar) y me sale "d" como debe ser.

Así que para resumir, sitypeEncoding = float, funciona, si es un doble, el resultado no se establece pero lee correctamente la variable y el valor de retorno (Ivar) también es correcto.

Debo estar haciendo algo mal básico que no puedo ver, así que apreciaría si alguien pudiera señalarlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta