Obj-C错误:......之前的预期表达式(为什么?)

时间:2010-04-07 17:46:47

标签: c objective-c enums typedef

嗨我有一个这样的枚举:

typedef enum {
    Top,             
    Bottom,
    Center
} UIItemAlignment;

在我的代码中,我尝试使用它:

item.alignment = UIItemAlignment.Top;

我收到如下错误:“'UIItemAlignment'之前的预期表达式”

如果我只使用:

item.alignment = Top;

一切正常,但如果我尝试以其他方式使用它,为什么会出现此错误?

_alignmentNSInteger,它有一个像这样声明的属性

@property (readwrite) NSInteger alignment;我在我的实施文件中合成了它。

所以我的问题是,为什么我会收到此错误?

3 个答案:

答案 0 :(得分:5)

枚举值不是通过objective-c和c ++中的类型指定的。您尝试使用的语法是C#如何处理它。

答案 1 :(得分:1)

要指定枚举值,您无需指定其类型。为了更清楚,你可以这样写:

UIItemAlignment alignment = Top;
item.alignment = alignment;

但没有必要这样做。

答案 2 :(得分:1)

enum { }内声明的值本身就是整数常量,并不依赖于枚举类型。它们用作与int'd常量类似的#define值。另外,您可以选择使用枚举类型(例如此处为UIItemAlignment)作为一种整数变量,保证能够表示枚举常量,但类型本身不是类或包含这些常量的结构 - 因此.不起作用。