是否可以指定Objective-C枚举的基础类型?

时间:2012-10-24 23:28:17

标签: objective-c enums

我很惊讶地发现Xcode没有为以下代码发出错误,这在C中无效:

typedef enum : NSUInteger {
    FLAG_A = 1,
    FLAG_B = 2,
    FLAG_C = 4
} MyFlags;

这似乎使NSUInteger成为MyFlags枚举的基础类型,非常类似于C#用于设置枚举的基础类型的语法。

这种语法是否按照它出现的方式执行,还是意味着什么呢?

2 个答案:

答案 0 :(得分:4)

这是从C ++ 11借用的一个功能,用于确保枚举的特定大小。它允许在框架的公共API中使用枚举,而不必担心ABI最终会破坏。

Clang implements this feature并允许在Objective-C中将其用作语言扩展。

答案 1 :(得分:1)

这在目标c中可以正常工作。你可以在枚举中设置这些参数的任何值。