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.