新的NSNumber文字

Pet*_*rbo 6 cocoa objective-c nsnumber xcode4.5

由于NSNumberObjective-C中有新的文字,您可以使用,例如:

NSNumber *n1 = @1000;  // [NSNumber numberWithInt:1000]
Run Code Online (Sandbox Code Playgroud)

但它似乎不可能与枚举一起使用?我试过了:

typedef enum {

    MyEnumA = 0,
    MyEnumB,
    MyEnumC

} MyEnum;

NSNumber *n2 = @MyEnumA;  // [NSNumber numberWithInt:MyEnumA]
Run Code Online (Sandbox Code Playgroud)

但我得到一个编译器错误说:

程序中意外的'@'

我不明白为什么它不起作用,因为枚举是一个int?有没有办法让这项工作?

Wev*_*vah 17

对于命名常量,您需要使用@(MyEnumA).

  • 原因是Apple可能希望稍后添加一个名为"@ MyEnumA"的关键字,并且不想破坏您的代码. (6认同)
  • @GrahamLee名称冲突不仅限于将来添加的语言.考虑一个名为`interface`或`end`的枚举. (3认同)