如何在返回指针时从object_getIvar(self,myIntVar)获取int值

Rus*_*est 7 variables objective-c return-value objective-c-runtime

如果object_getIvar中的变量是基本数据类型(例如,float,int,bool),我如何根据文档返回指针(id)来获取值.我已经尝试转换为int,int*但是当我尝试将其转换为NSLog时,我收到有关不兼容指针类型的错误.

jha*_*erg 6

得到:

myFloat = 2.34f;

float myFloatValue;
object_getInstanceVariable(self, "myFloat", (void*)&myFloatValue);

NSLog(@"%f", myFloatValue);
Run Code Online (Sandbox Code Playgroud)

输出:

2.340000

设定:

float newValue = 2.34f;
unsigned int addr = (unsigned int)&newValue;

object_setInstanceVariable(self, "myFloat", *(float**)addr);

NSLog(@"%f", myFloat);
Run Code Online (Sandbox Code Playgroud)

输出:

2.340000

  • 这不起作用,因为你有一个拼写错误,如果你改变(void)和myFloatValue到(void*)&myFloatValue它的工作原理. (2认同)