在 Objective-C 中使用枚举名称作为值标识符

Usage of enum name as value identifier in Objective-C

参考this post,似乎在Objective-C中不可能定义两个具有相同值的enum,如本例:

enum AnEnum {
  AnyValue
};

enum AnotherEnum {
  AnyValue // Error: Redefinition of enumerator 'AnyValue'
};

我想了解为什么可以为 enum 设置名称的机会,但显然没有任何可能使用它(例如在 Java 中通过调用值AnotherEnum.AnyValue).

Objective-C 是 C。enum 是 C 枚举。而且没有命名空间。这正是约定将枚举命名为 AnEnumAnyValue 和 AnotherEnumAnyValue 的原因。您会发现所有 Cocoa 枚举都是这样工作的:

typedef enum {
   UIViewAnimationTransitionNone,
   UIViewAnimationTransitionFlipFromLeft,
   UIViewAnimationTransitionFlipFromRight,
   UIViewAnimationTransitionCurlUp,
   UIViewAnimationTransitionCurlDown,
} UIViewAnimationTransition;

如果您想要像 Java 这样的范围枚举名称,请切换到 Swift。