Пост, который вы связали, объясняет почему довольно ясно. Оператор <<
в C сдвигает числа, оставленные на указанное количество битов. Сдвигая 1 в каждый столбец, легко увидеть, что параметры перечисления могут быть побитово ИЛИ вместе. Это позволяет комбинировать опции enum, используя | оператор и удерживается в одном целом числе. Это не сработало бы, если бы объявление enum было следующим:
enum {
UITableViewCellStateDefaultMask = 0, (= 00 in binary)
UITableViewCellStateShowingEditControlMask = 1, (= 01 in binary)
UITableViewCellStateShowingDeleteConfirmationMask = 2, (= 10 in binary)
UITableViewCellStateThatIJustMadeUpForThisExample = 3 (= 11 in binary)
};
Поскольку в двоичном виде 3 = 11, невозможно узнать из одного целого числа, есть ли у вас состояние UITableViewCellStateThatIJustMadeUpForThisExample
или UITableViewCellStateShowingEditControlMask
ИЛИ с UITableViewCellStateShowingDeleteConfirmationMask
.