枚举NS_OPTIONS

时间:2013-11-04 06:52:03

标签: ios objective-c nsoperation

我有一个NS_OPTIONS:

typedef NS_OPTIONS(NSUInteger, BrowserViewMenuOptions) {
    BrowserViewMenuOptionNone     = 0,
    BrowserViewMenuOptionCopy     = 1 << 0,
    BrowserViewMenuOptionMore     = 1 << 1,
    BrowserViewMenuOptionShare    = 1 << 2,
    BrowserViewMenuOptionDelete   = 1 << 3,
    BrowserViewMenuOptionDownload = 1 << 4,
};

假设我有这样的值:

(BrowserViewMenuOptionCopy | BrowserViewMenuOptionMore | BrowserViewMenuOptionShare)

我如何像对阵列一样枚举它?

1 个答案:

答案 0 :(得分:4)

你不能枚举,因为这些是常量值而不是集合中的元素,但是如果enum遵循没有间隙的模式,那么你可以生成所有的数字枚举的值。你的确如此:

for (unsigned i = 0; i < 5; i++) {
    NSLog(@"value=%u", 1 << i);
}

要生成名称,您需要一个查找表。