<< operator in objective c enum?

后端 未结 6 1188
别跟我提以往
别跟我提以往 2021-02-04 05:46

I was looking for something and got in to this enum is apple UITableViewCell.h.

I am sorry if this is trivial but I wonder/curious what is the point of this.

I

6条回答
  •  伪装坚强ぢ
    2021-02-04 06:39

    These are bit-field flags. They are used because you can combine them using the bitwise-OR operator. So for example you can combine them like

    (UITableViewCellStateShowingEditControlMask | UITableViewCellStateShowingDeleteConfirmationMask)
    

    They work by having one bit set in an integer. In this example, in binary,

    UITableViewCellStateShowingEditControlMask        = 0000 0001
    UITableViewCellStateShowingDeleteConfirmationMask = 0000 0010
    

    When they are OR'ed together, they produce 0000 0011. The framework then knows that both of these flags are set.

    The << operator is a left-shift. It shifts the binary representation. So 1 << 1 means

    0000 0001 shifted left by one bit = 0000 0010
    

    1 << 2 would equal 0000 0100.

提交回复
热议问题