1

私は TypeDef でこのタイプの Enum を持っています:

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 フレームワークは、enumを使用して定数値を定義することがよくあります。enum 値は不可欠ですが、ボックス化されたリテラルとして直接使用することはできません (これにより、将来の'@'プレフィックスの Objective-C キーワードとの競合が回避されます)。代わりに、列挙値をボックス式の中に配置する必要があります。

于 2013-01-15T17:29:34.307 に答える