【发布时间】:2012-05-05 12:38:34
【问题描述】:
有没有办法在目标 c 的运行时为枚举分配值? 我有几个枚举,并希望每个枚举都有一定的价值。 这些值可以从 xml 文件中读取。有没有办法做到这一点?
【问题讨论】:
标签: objective-c ios enums objective-c-runtime
有没有办法在目标 c 的运行时为枚举分配值? 我有几个枚举,并希望每个枚举都有一定的价值。 这些值可以从 xml 文件中读取。有没有办法做到这一点?
【问题讨论】:
标签: objective-c ios enums objective-c-runtime
不幸的是,@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;
}
这还具有能够遍历值的优点,这对于普通枚举是不可能的:
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]);
}
总而言之,这是我在 C 中进行枚举的首选方式。
【讨论】:
main() 之前)。一个非常有用的结构,只要你不做繁重的工作,你应该没问题。
不,枚举信息在编译时被删除。
【讨论】: