我有这个:
Ivar ivar = class_getInstanceVariable([self class], [name UTF8String]);
CGFloat floatVal = [coder decodeFloatForKey:name];
然后,我想这样做:
object_setIvar(self, ivar, floatVal);
...但是我不能像这样使用floatVal-在这种情况下使用floatVal的语法是什么?
最佳答案
首先,使用键值编码可能更容易:
[self setValue:@(floatVal) forKey:name];
关于您的问题,我相信您必须首先将
object_setIvar
强制转换为用于设置float
类型的适当函数类型,然后将其调用(未经测试):void (*f)(id, Ivar, CGFloat) = (void (*)(id, Ivar, CGFloat))object_setIvar;
f(self, ivar, floatVal);
关于objective-c - 在Objective-C中,如何使用object_setIvar设置原始值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28063265/