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