2013-05-15 13 views

回答

1

简短的回答,你可能想要的是:
[obj setValue:@"woof" forKey:@"dog"];

和随笔...

您可以使用运行时发现的所有类的高德的搭配:

Ivar * class_copyIvarList(Class cls, unsigned int *outCount)

如:

id someObj; //assigned elsewhere 
unsigned int count = 0; 
Ivar * iVarList = class_copyIvarList([someObj class],&count); 
for(;count>0;count--) 
{ 
    Ivar testVar = iVarList[count]; 
    //do something with test Ivar 
} 
free(iVarList); 

我几乎可以肯定,你会不会永远想这样做,除非是在调试场景...自省私人框架等

,或者如果你知道伊娃的名字就可以使用:
Ivar object_setInstanceVariable(id obj, const char *name, void *value)或更多objc的方式[obj setValue: @"woof" forKey:@"dog"]这将最终失败,直到设置iVar。

你可能会做的,我已经在过去做的是反思的属性列表:

有类似的呼吁:objc_property_t * class_copyPropertyList(Class cls, unsigned int *outCount)这对于复制不明物体,并可用于调试。

相关问题