嗨我有一个这样的枚举:
typedef enum {
Top,
Bottom,
Center
} UIItemAlignment;
在我的代码中,我尝试使用它:
item.alignment = UIItemAlignment.Top;
我收到如下错误:“'UIItemAlignment'之前的预期表达式”
如果我只使用:
item.alignment = Top;
一切正常,但如果我尝试以其他方式使用它,为什么会出现此错误?
_alignment
是NSInteger
,它有一个像这样声明的属性
@property (readwrite) NSInteger alignment;
我在我的实施文件中合成了它。
所以我的问题是,为什么我会收到此错误?
答案 0 :(得分:5)
枚举值不是通过objective-c和c ++中的类型指定的。您尝试使用的语法是C#如何处理它。
答案 1 :(得分:1)
要指定枚举值,您无需指定其类型。为了更清楚,你可以这样写:
UIItemAlignment alignment = Top;
item.alignment = alignment;
但没有必要这样做。
答案 2 :(得分:1)
enum { }
内声明的值本身就是整数常量,并不依赖于枚举类型。它们用作与int
'd常量类似的#define
值。另外,您可以选择使用枚举类型(例如此处为UIItemAlignment
)作为一种整数变量,保证能够表示枚举常量,但类型本身不是类或包含这些常量的结构 - 因此.
不起作用。