0

我正在查看可可框架中的枚举,我看到了这个:

enum {  
    NSNetServiceNoAutoRename = 1UL << 0  
}; 

typedef NSUInteger NSNetServiceOptions;

我的问题是这怎么可能?

是怎么NSNetServiceOptions联系的enum

是只能在目标 c 中还是在 c 中才有可能?

4

2 回答 2

1

C 中的枚举(以及随后的 Obj-C 和 C++)是弱类型的,这意味着您可以在枚举和整数之间进行隐式强制转换,因为它们只是ints。

例如,这是完全有效的:

enum {A = 1};
enum {B = A+1};

const int C = A | B;

enum 使用 typedef 而不是 shortformtypedef enum {...} Name;的原因是 enums 默认为 type int。通过使用 typedef,您可以将枚举定义为无符号整数。

于 2012-05-10T10:39:13.770 回答
1

NSNetServiceOptions绑定到该枚举的上下文中,枚举将保持一个整数值。在上面的示例中,您将为枚举创建一个变量,如下所示:

NSNetServiceOptions _netServiceOptions;

您甚至可以忽略typedef并直接使用,

NSUIInteger _netServiceOptions;
于 2012-05-10T10:40:03.260 回答