【问题标题】:<< in UITableView Enum<< 在 UITableView 枚举中
【发布时间】:2012-03-24 13:45:58
【问题描述】:

UITableViewCell中使用了

enum {
     UITableViewCellStateDefaultMask                     = 0,
     UITableViewCellStateShowingEditControlMask          = 1 << 0,
     UITableViewCellStateShowingDeleteConfirmationMask   = 1 << 1
};

我去过<< operator in objective c enum?这个帖子,但仍然不清楚

上面提到的Enum和下面写的一样,那为什么会这样呢,他们用了

enum {
     UITableViewCellStateDefaultMask                     = 0,
     UITableViewCellStateShowingEditControlMask          = 1,
     UITableViewCellStateShowingDeleteConfirmationMask   = 2
};

【问题讨论】:

    标签: objective-c uitableview enums bitwise-operators


    【解决方案1】:

    您链接的帖子非常清楚地解释了原因。 C 中的&lt;&lt; 运算符将数字左移指定的位数。通过将 1 移入每一列,很容易看出枚举选项可以按位或一起运算。这允许使用 | 将枚举选项组合在一起。运算符并保​​存在一个整数中。如果枚举声明如下,这将不起作用:

    enum {
         UITableViewCellStateDefaultMask                     = 0, (= 00 in binary)
         UITableViewCellStateShowingEditControlMask          = 1, (= 01 in binary)
         UITableViewCellStateShowingDeleteConfirmationMask   = 2, (= 10 in binary)
         UITableViewCellStateThatIJustMadeUpForThisExample   = 3  (= 11 in binary)
    };
    

    由于 3 = 11 在二进制中,如果您的状态为 UITableViewCellStateThatIJustMadeUpForThisExampleUITableViewCellStateShowingEditControlMaskUITableViewCellStateShowingDeleteConfirmationMask 进行 ORed,则无法从单个整数中知道。

    【讨论】:

      【解决方案2】:

      枚举值为要在位掩码中使用的位命名。位掩码中的位按值是 1, 2, 4, 8, 16, ...(2 的幂)。使用表达式 (1

      当您使用这些值时,它们通常使用按位或运算 ('|') 组合在一起。目标是指定零个或多个位,每个位都有特定的含义。使用位掩码允许您独立但紧凑地指定它们。您可能希望阅读有关位掩码的更多信息以获取更多详细信息和示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        • 2011-03-22
        • 2015-08-08
        • 2010-11-26
        相关资源
        最近更新 更多