我正在查看可可框架中的枚举,我看到了这个:
enum {
NSNetServiceNoAutoRename = 1UL << 0
};
typedef NSUInteger NSNetServiceOptions;
我的问题是这怎么可能?
是怎么NSNetServiceOptions
联系的enum
?
是只能在目标 c 中还是在 c 中才有可能?
我正在查看可可框架中的枚举,我看到了这个:
enum {
NSNetServiceNoAutoRename = 1UL << 0
};
typedef NSUInteger NSNetServiceOptions;
我的问题是这怎么可能?
是怎么NSNetServiceOptions
联系的enum
?
是只能在目标 c 中还是在 c 中才有可能?
C 中的枚举(以及随后的 Obj-C 和 C++)是弱类型的,这意味着您可以在枚举和整数之间进行隐式强制转换,因为它们只是int
s。
例如,这是完全有效的:
enum {A = 1};
enum {B = A+1};
const int C = A | B;
enum 使用 typedef 而不是 shortformtypedef enum {...} Name;
的原因是 enums 默认为 type int
。通过使用 typedef,您可以将枚举定义为无符号整数。
NSNetServiceOptions绑定到该枚举的上下文中,枚举将保持一个整数值。在上面的示例中,您将为枚举创建一个变量,如下所示:
NSNetServiceOptions _netServiceOptions;
您甚至可以忽略typedef并直接使用,
NSUIInteger _netServiceOptions;