<<客观的运算符?

sha*_*oga 15 objective-c operators

我正在寻找一些东西,并进入这个枚举是苹果UITableViewCell.h.

我很抱歉,如果这是微不足道的,但我想知道/好奇这是什么意思.

我知道<<来自红宝石,但我真的不明白这个枚举?

enum {
    UITableViewCellStateDefaultMask                     = 0,
    UITableViewCellStateShowingEditControlMask          = 1 << 0,
    UITableViewCellStateShowingDeleteConfirmationMask   = 1 << 1
};
Run Code Online (Sandbox Code Playgroud)

谢谢

BTW 发现它是一种学习编码的好方法,我在一天内尝试进入对象列表的头文件.

沙尼

joe*_*ick 25

这些是位字段标志.使用它们是因为您可以使用按位OR运算符组合它们.例如,您可以将它们组合起来

(UITableViewCellStateShowingEditControlMask | UITableViewCellStateShowingDeleteConfirmationMask)
Run Code Online (Sandbox Code Playgroud)

它们通过将一位设置为整数来工作.在这个例子中,二进制,

UITableViewCellStateShowingEditControlMask        = 0000 0001
UITableViewCellStateShowingDeleteConfirmationMask = 0000 0010
Run Code Online (Sandbox Code Playgroud)

当它们被"或"在一起时,它们会产生0000 0011.然后框架知道这两个标志都已设置.

<<运营商是一个左移.它改变了二进制表示.所以1 << 1意味着

0000 0001 shifted left by one bit = 0000 0010
Run Code Online (Sandbox Code Playgroud)

1 << 2等于0000 0100.