i_r*_*aqz 6 enums objective-c objective-c-runtime ios
有没有办法在运行时在目标c中为枚举值赋值?我有几个枚举,并希望每个枚举都有一定的价值.可以从xml文件中读取值.有没有办法做到这一点?
Ric*_*III 16
不幸的是,@ Binyamin是正确的,你不能用枚举来做到这一点.出于这个原因,我通常在我的项目中执行以下操作:
// in .h
typedef int MyEnum;
struct {
MyEnum value1;
MyEnum value2;
MyEnum value3;
} MyEnumValues;
// in .m
__attribute__((constructor))
static void initMyEnum()
{
MyEnumValues.value1 = 10;
MyEnumValues.value2 = 75;
MyEnumValues.value3 = 46;
}
Run Code Online (Sandbox Code Playgroud)
这也具有能够遍历值的优点,这是普通枚举无法实现的:
int count = sizeof(MyEnumValues) / sizeof(MyEnum);
MyEnum *values = (MyEnum *) &MyEnumValues;
for (int i = 0; i < count; i++)
{
printf("Value %i is: %i\n", i, values[i]);
}
Run Code Online (Sandbox Code Playgroud)
总而言之,这是我在C中进行枚举的首选方式.
| 归档时间: |
|
| 查看次数: |
10767 次 |
| 最近记录: |