在objective-c中,如何使用object_setIvar设置原始值?
问题描述:
我有这样的:在objective-c中,如何使用object_setIvar设置原始值?
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) = object_setIvar;
f(self, ivar, floatVal);