Ответ 1
Да, используйте побитовое ИЛИ (|
) для установки нескольких флагов:
ColorType pinkColor = kWhite | kRed;
Затем используйте побитовое И (&
), чтобы проверить, установлен ли флаг:
if ( pinkColor & kRed )
{
// do something
}
Результат &
имеет любой бит, установленный только в том случае, если тот же бит установлен в обоих операндах. Так как единственный бит в kRed
- бит 1, результат будет равен 0, если другой операнд также не имеет этого бита.
Если вам нужно определить, установлен ли конкретный флаг как BOOL
, а не просто проверить его в состоянии if
, сравните результат побитового И с проверенным битом:
BOOL hasRed = ((pinkColor & kRed) == kRed);