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



参考这篇文章,似乎在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。

相关内容

  • 没有找到相关文章

最新更新