在Java中,可以使枚举具有多个值。
在目标C中,这不容易完成。
我已经阅读了许多有关此内容的页面,但没有找到让我以简单的方式使用枚举并将枚举声明及其不同值保存在同一文件中的令人满意的东西。
我想在enums.h中写这样的东西:
// ========================================
typedef enum {eRED, eGREEN, eBLUE} ColorEnum;
int colorValues[] = { 0xFF0000, 0x00FF00, 0x0000FF };
NSArray *colorNames = [NSArray arrayWithObjects:@"Red color", @"light green", @"Deep blue", nil];
// ========================================
并能够使用这些全局变量来管理我的东西,例如:
int color = colorValues[eRED];
但是我不知道该怎么写。
我有很多类似“ ColorValues”的编译错误。
或者,如果我只使用“静态”,那么我有许多未在.m文件中使用的“ ColorValues” ...
你可以帮帮我吗 ?
最佳答案
您接近了-问题是您将数组的定义放在了头文件中,多个编译单元最终将其复制。把你的中间线:
int colorValues[] = { 0xFF0000, 0x00FF00, 0x0000FF };
放入您的
.m
文件之一,并将标题更改为:extern int colourValues[];
您需要对
colorNames
做类似的事情。将标题更改为:extern NSArray *colorNames;
然后声明实际对象并在
.m
文件中对其进行初始化。