object_getInstanceVariable działa dla float, int, bool, ale nie dla double?

Mamobject_getInstanceVariable pracować jaktutaj jednak wydaje się, że działa tylko dla pływaków, booli i intów, a nie podwójnych. Podejrzewam, że robię coś złego, ale chodzę z tym w kółko.

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

działa, a myFloatValue = 2.123

ale kiedy próbuję

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

dostajęmyDoubleValue = 0. Jeśli spróbuję ustawićmyDoubleValue przed funkcją np.double myDoubleValue = 1.2f, wartość pozostaje niezmieniona po przeczytaniu jej poobject_getInstanceVariable połączenie. OprawamyIntValue do innej wartości przedgetinstancevar powyższa funkcja zwraca 2 tak jak powinna, tj. został zmieniony.

potem spróbowałem

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

Jeśli zrobięivar_getName(tmpIvar) Dostaję „someDouble”, alemyDoubuleValue = 0 nadal! Potem próbujęivar_getTypeEncoding(tmpIvar) i dostaję „d”, jak powinno być.

Podsumowując, jeślitypeEncoding = float, działa, jeśli jest podwójny, wynik nie jest ustawiony, ale poprawnie odczytuje zmienną, a wartość zwracana (Ivar) jest również poprawna.

Muszę robić coś złego, którego nie widzę, więc doceniłbym, gdyby ktoś mógł to wskazać.

questionAnswers(2)

yourAnswerToTheQuestion