在objective-c中,如何使用object_setIvar设置原始值?

在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);