2010-09-16 50 views
1

可能重複:
Can an objective C method signature specify an enum type?客觀C方法簽名可以指定一個枚舉類型嗎?

「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'。這裏發生了什麼?

+0

另請參見:http://stackoverflow.com/questions/707512/typedef-enum-in-objective-c – 2010-09-16 01:49:10

+0

我打算標記這個,因爲很難雙重發表相同的問題,所以圖有人管理可能想看看它是簡單的錯誤還是很深的SO奧祕 – msw 2010-09-16 01:49:54

+0

@quixoto:我一直在追蹤鏈接,認爲這傢伙發佈了100個重複。時間多喝咖啡。 – dreamlax 2010-09-16 02:26:50

回答

5

你必須把它稱爲enum VoiceName

-(void)pulseFiredWithSamplePosition:(float)position from: (enum VoiceName) voiceName; 

或者你可以的typedef它:

typedef enum { 
    /* ... */ 
} VoiceName; 

然後你可以稱其爲VoiceName

+1

我們正在交叉回答同樣的問題,似乎是一個相同的答案。 :) – 2010-09-16 01:50:00

0

請記住這是Objective-C,它需要來自:(enum VoiceName)voiceName。

如果你不想說enum你可以使用typedef。