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