“VoiceName”是一个枚举,声明如下:
enum VoiceName {
PAD_RHYTHM,
PAD_RHYTHM2,
PAD_RHYTHM3,
PEEPERS,
ATMOSPHERE,
IMPULSE,
FAST_PULSE,
HAIRYBALLS_PADS,
KICK
};
编译器似乎不喜欢我在这样的方法签名中使用它:
-(void)pulseFiredWithSamplePosition:(float)position from: (VoiceName) voiceName;
它在'VoiceName'之前告诉我 expect')'。这是怎么回事?
答案 0 :(得分:8)
如果没有指定它是枚举:
,你不能像那样“裸”使用它-(void)pulseFiredWithSamplePosition:(float)position from: (enum VoiceName) voiceName;
应该有效。如果你想避免像那样指定它,你可以输入def it:
typedef enum _VoiceName {
PAD_RHYTHM,
....
} VoiceName;
然后你就可以只使用VoiceName
作为参数类型。
答案 1 :(得分:2)
从iOS6和Mac OSX 10.8开始,您可以使用NS_ENUM宏
typedef NS_ENUM(NSUInteger, VoiceName)
{
PAD_RHYTHM,
PAD_RHYTHM2,
PAD_RHYTHM3,
PEEPERS,
ATMOSPHERE,
IMPULSE,
FAST_PULSE,
HAIRYBALLS_PADS,
KICK
};
NSUInteger可以替换为您定义的任何类型,然后您可以使用您指定的方法。
答案 2 :(得分:1)
Obj-C基于C,而不是C ++。如quixoto所示,C需要enum关键字。 C ++允许你省略它。