I've got object_getInstanceVariable
to work as here however it seems to only work for floats, bools and ints not doubles. I do suspect I'm doing something wrong but I've been going in circles with this.
float myFloatValue;
float someFloat = 2.123f;
object_getInstanceVariable(self, "someFloat", (void*)&myFloatValue);
works, and myFloatValue = 2.123
but when I try
double myDoubleValue;
double someDouble = 2.123f;
object_getInstanceVariable(self, "someDouble", (void*)&myDoubleValue);
I get myDoubleValue = 0
. If I try to set myDoubleValue
before the function eg. double myDoubleValue = 1.2f
, the value is unchanged when I read it after the object_getInstanceVariable
call. Setting myIntValue
to some other value before the getinstancevar
function above returns 2 as it should, ie. it has been changed.
then I tried
Ivar tmpIvar = object_getInstanceVariable(self, "someDouble", (void*)&myDoubleValue);
If I do ivar_getName(tmpIvar)
I get "someDouble", but myDoubuleValue = 0
still! Then I try ivar_getTypeEncoding(tmpIvar)
and I get "d" as it should be.
So to summarize, if typeEncoding = float
, it works, if it is a double, the result is not set but it correctly reads the variable and the return value (Ivar) is also correct.
I must be doing something basic wrong that I cant see so I'd appreciate if someone could point it out.