How to use enums with bit flags How to use enums with bit flags objective-c objective-c

How to use enums with bit flags


Yes, use bitwise OR (|) to set multiple flags:

ColorType pinkColor = kWhite | kRed;

Then use bitwise AND (&) to test if a flag is set:

if ( pinkColor & kRed ){   // do something}

The result of & has any bit set only if the same bit is set in both operands. Since the only bit in kRed is bit 1, the result will be 0 if the other operand doesn't have this bit set too.

If you need to get whether a particular flag is set as a BOOL rather than just testing it in an if condition immediately, compare the result of the bitwise AND to the tested bit:

BOOL hasRed = ((pinkColor & kRed) == kRed);