1

我有这种类型的 Enum 和 TypeDef:

typedef enum {
    ControlDisplayOptionNone = 0,
    ControlDisplayOptionOne = 100
} ControlDisplayOption;

我希望能够将它们放在这样的数组中:

- (NSArray *)displayOptions {
    return @[@ControlDisplayOptionNone];
}

但这行不通,即使这样也行不通:

NSNumber *test = @ControlDisplayOptionNone;

唯一可行的选择是传统的:

return @[[NSNumber numberWithInt:ControlDisplayOptionNone]];

有没有办法为此使用自动装箱?

4

1 回答 1

5

使用括号:@(ControlDisplayOptionNone)

Objective-C Literals的 Clang 文档中解释了语法。“盒装枚举”部分说:

Cocoa 框架经常使用枚举定义常量值。尽管枚举值是整数,但它们不能直接用作盒装文字(这样可以避免与以 future'@'为前缀的 Objective-C 关键字发生冲突)。相反,枚举值必须放在一个装箱的表达式内。

于 2013-01-15T17:29:34.307 回答