我有一些UIPopoverViewControllers
做消息傳遞給委託UIViewControllers
傳遞UI事件。我沒有爲每個事件編寫單獨的方法,而是在委託中使用switch語句來決定如何根據傳遞的常量處理事件(下面的示例)。如何在類之間共享常量(枚舉)?
這可能是糟糕的設計,但這是我想出的。我已經看到this有關枚舉或靜態類的問題,但不明白答案。
So..is我在做什麼BAD,是有辦法,我可以在一個地方定義枚舉,這樣我就不必維護多個代碼位,可以很容易地得到不同步?
編輯好了,周圍多一點(here + here)我知道我可能是在正確的軌道上挖。所以我想我需要知道在iOS中implementation
文件的內容和位置。
enum {
kSetPlaybackType = 0,
kSetAllNotesOn,
kSetAllNotesOff,
kSetVelocity,
kSetDuration
};
- (void)barPropertyAction:(int)action withParam:(NSNumber *)param
{
switch (action) {
case kSetPlaybackType:
playbackType = [param intValue];
if (playbackType == kPalindrome){
palindromeDirection = kPalindromeUp;
}
break;
case kSetAllNotesOn:
for (BarNote* note in self.barNoteArray) {
note.noteOn = YES;
}
[self.bar updateWindows];
break;
case kSetAllNotesOff:
for (BarNote* note in self.barNoteArray) {
note.noteOn = NO;
}
[self.bar updateWindows];
break;
case kSetVelocity:
for (BarNote* note in self.barNoteArray) {
note.velocity = [param intValue];
}
break;
case kSetDuration:
for (BarNote* note in self.barNoteArray) {
note.duration = [param floatValue];
}
break;
default:
break;
}
}
而且,他應該做的是命名使用'typedef'枚舉,而不是使用'int'作爲參數的一件事,當預期指定的枚舉。 – Sulthan 2012-02-29 19:32:53
@Sulthan我這樣做,因爲你評論:D – 2012-02-29 19:35:12
這是偉大的 - 謝謝!我已經添加了typedef +常量名稱,並將枚舉定義移至.h文件。能夠在我的方法sig中使用typedef。 ' - (void)barPropertyAction:(kBarProperty)action withParam:(NSNumber *)param;' – 2012-02-29 20:12:23