我有这种类型的带有TypeDef的枚举:
typedef enum {
ControlDisplayOptionNone = 0,
ControlDisplayOptionOne = 100
} ControlDisplayOption;
我希望能够将它们放在这样的数组中:
- (NSArray *)displayOptions {
return @[@ControlDisplayOptionNone];
}
但这不起作用,即使这样也行不通:
NSNumber *test = @ControlDisplayOptionNone;
唯一可行的选择是传统的:
return @[[NSNumber numberWithInt:ControlDisplayOptionNone]];
有没有办法为此使用自动装箱?
答案 0 :(得分:5)
使用括号:@(ControlDisplayOptionNone)
语法在Clang documentation for Objective-C Literals中解释。 "盒装枚举"部分说:
Cocoa框架经常使用枚举定义常量值。虽然枚举值是不可变的,但它们可能不会直接用作盒装文字(这可避免与将来的
'@'
- 前缀的Objective-C关键字冲突)。相反,枚举值必须放在盒装表达式中。