【发布时间】:2010-11-30 23:02:14
【问题描述】:
是否可以在运行时获取枚举定义的项目总数?
虽然它与this one 的问题几乎相同,但该问题与 C# 有关,据我所知,那里提供的方法在 Objective-C 中不起作用。
【问题讨论】:
标签: objective-c c enums
是否可以在运行时获取枚举定义的项目总数?
虽然它与this one 的问题几乎相同,但该问题与 C# 有关,据我所知,那里提供的方法在 Objective-C 中不起作用。
【问题讨论】:
标签: objective-c c enums
enum 是普通的旧 C 类型,因此它不提供动态运行时信息。
另一种方法是使用枚举的最后一个元素来指示计数:
typedef enum {
Red,
Green,
Blue,
numColors
} Color;
【讨论】:
typedef enum { Red=0xff0000, Green=0x00ff00, Blue=0x0000ff, numColors} Color; 完全失败。
使用预处理器,您可以实现这一目标,而无需为枚举添加额外值的烦人“hack”
#define __YourEnums \
YourEnum_one, \
YourEnum_two, \
YourEnum_three, \
YourEnum_four, \
YourEnum_five, \
YourEnum_six,
typedef enum : NSInteger {
__YourEnums
}YourEnum;
#define YourEnum_count ({ \
NSInteger __YourEnumsArray[] = {__YourEnums}; \
sizeof(__YourEnumsArray)/sizeof(__YourEnumsArray[0]); \
})
【讨论】: