参考这篇文章,似乎在Objective-C中没有可能定义两个具有相同值的enum
,如在本例中:
enum AnEnum {
AnyValue
};
enum AnotherEnum {
AnyValue // Error: Redefinition of enumerator 'AnyValue'
};
我想了解背景,为什么有机会为enum
s设置名称,但显然没有任何可能利用它(例如,像在Java中通过AnotherEnum.AnyValue
调用值)。
Objective-C是C, enum
是C enum。并且没有名称空间。这就是约定将枚举命名为AnEnumAnyValue和AnotherEnumAnyValue的原因。你会发现所有的Cocoa枚举都是这样工作的:
typedef enum {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
} UIViewAnimationTransition;
如果你想要像Java那样的范围枚举名,切换到Swift。