6

Objective cの実行時に列挙型に値を割り当てる方法はありますか?私はいくつかの列挙型を持っており、それぞれの列挙型に特定の値を持たせたいと思っています。値はxmlファイルから読み取ることができます。これを行う方法はありますか?

4

2 に答える 2

17

残念ながら、@ 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 で列挙型を行うための私の好みの方法です。

于 2012-04-24T20:20:21.080 に答える
6

いいえ、列挙型情報はコンパイル時に消去されます。

于 2012-04-24T20:12:53.063 に答える