我有一些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