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

时间:2015-05-24 17:34:43

标签: objective-c enums namespaces declaration redefinition

参考this post,似乎Objective-C中没有可能定义两个enum s,其值与此示例相同:

enum AnEnum {
  AnyValue
};

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

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

1 个答案:

答案 0 :(得分:1)

Objective-C是C. enum是C enum。而且没有命名空间。这就是为什么约定命名枚举AnEnumAnyValue和AnotherEnumAnyValue的原因。您会发现所有Cocoa枚举都以这种方式工作:

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

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