目标C:检查启用标志的方法

时间:2011-09-26 13:24:23

标签: objective-c enums

我正在使用bitflag来启用/禁用我的代码中的某些功能。我有以下枚举。

typedef enum function {
    function1 = 1 << 0,
    function2 = 1 << 1,
    function3 = 1 << 2,
    function4 = 1 << 3
};

我知道我需要使用以下代码来检查已启用哪个标志。

if((flags & function1) == function1)
{
    // do some action
}

在我的枚举中,标志的数量很大并且要检查每个标志,我需要进行那么多“if”条件检查。有没有什么方法可以最大限度地减少if语句的数量?我是目标C的新手,希望在目标C中实现它。先谢谢。

1 个答案:

答案 0 :(得分:3)

是的,通过按位或:

组合标志
if (flags & (function1 | function2 | function3 | function4))
{
  // any of the flags has been set
}

此外,要检查特定标记,您不需要部分== function1flags & function1就足够了,因为它会评估为零或function1