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ć.