object_getInstanceVariable works for float, int, bool, but not for double?

Posted by Russel West on Stack Overflow See other posts from Stack Overflow or by Russel West
Published on 2009-08-02T15:05:52Z Indexed on 2010/05/31 16:43 UTC
Read the original article Hit count: 471

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.

© Stack Overflow or respective owner

Related posts about objective-c

Related posts about return-value