在 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。
参考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。