Objective-C:检查是否使用枚举选项

Nic*_*ard 5 iphone objective-c ios

我有一个使用typedef枚举的自定义对象.如果我为我的对象设置了一些枚举选项,我该如何检查它们是否被使用?

typedef enum {
    Option1,
    Option2,
    Option3
} Options;
Run Code Online (Sandbox Code Playgroud)

在创建我的对象时,我可能会使用:

myobject.options = Option1 | Option2;
Run Code Online (Sandbox Code Playgroud)

我怎样才能稍后检查哪些枚举选项被设置?如:

if (myobject.options == Option1) {
  // Do something
}

if (myobject.options == Option2) {
  // Do something
}
Run Code Online (Sandbox Code Playgroud)

glo*_*ker 24

如果要为options参数执行按位逻辑,则应定义枚举,以便每个选项只设置一个位:

typedef enum {
    Option1 = 1,       // 00000001
    Option2 = 1 << 1,  // 00000010
    Option3 = 1 << 2   // 00000100
} Options;
Run Code Online (Sandbox Code Playgroud)

然后使用按位OR运算符设置选项:

myObject.options = Option1 | Option2;
Run Code Online (Sandbox Code Playgroud)

并使用按位AND运算符检查已设置的选项:

if(myObject.options & Option1) {
    // Do something
}
Run Code Online (Sandbox Code Playgroud)