objective-c – 在运行时更改枚举值?

前端之家收集整理的这篇文章主要介绍了objective-c – 在运行时更改枚举值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在运行时在目标c中为枚举值赋值?
我有几个枚举,并希望每个枚举都有一定的价值.
可以从xml文件中读取值.有没有办法做到这一点?

解决方法

不幸的是,@ 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中进行枚举的首选方式.

原文链接:https://www.f2er.com/c/117675.html

猜你在找的C&C++相关文章