我正在尝试实现以下typedef

typedef NS_OPTIONS (NSInteger, MyCellCorners) {
    MyCellCornerTopLeft,
    MyCellCornerTopRight,
    MyCellCornerBottomLeft,
    MyCellCornerBottomRight,
};

并正确分配一个值
MyCellCorners cellCorners = (MyCellCornerTopLeft | MyCellCornerTopRight);

绘制单元格时,如何检查哪个选项匹配,以便正确绘制它。

最佳答案

检查此值的正确方法是先按位与这些值相加,然后检查与所需值的相等性。

MyCellCorners cellCorners = MyCellCornerTopLeft | MyCellCornerTopRight;

if ((cellCorners & MyCellCornerTopLeft) == MyCellCornerTopLeft) {
    // top left corner set
}

以下引用资料解释了为什么这是正确的,并提供了对枚举类型的其他见解。

引用:checking-for-a-value-in-a-bit-mask

关于objective-c - NS_OPTIONS个匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13814733/

10-11 20:51