我正在尝试实现以下typedef
typedef NS_OPTIONS (NSInteger, MyCellCorners) {
MyCellCornerTopLeft,
MyCellCornerTopRight,
MyCellCornerBottomLeft,
MyCellCornerBottomRight,
};
并使用
正确分配值MyCellCorners cellCorners = (MyCellCornerTopLeft | MyCellCornerTopRight);
绘制单元格时,如何检查哪些选项匹配,以便我可以正确绘制它。
答案 0 :(得分:52)
使用位屏蔽:
typedef NS_OPTIONS (NSInteger, MyCellCorners) {
MyCellCornerTopLeft = 1 << 0,
MyCellCornerTopRight = 1 << 1,
MyCellCornerBottomLeft = 1 << 2,
MyCellCornerBottomRight = 1 << 3,
};
MyCellCorners cellCorners = MyCellCornerTopLeft | MyCellCornerTopRight;
if (cellCorners & MyCellCornerTopLeft) {
// top left corner set
}
if (etc...) {
}
答案 1 :(得分:21)
检查此值的正确方法是先按位AND值,然后检查是否与所需值相等。
MyCellCorners cellCorners = MyCellCornerTopLeft | MyCellCornerTopRight;
if ((cellCorners & MyCellCornerTopLeft) == MyCellCornerTopLeft) {
// top left corner set
}
以下参考资料解释了为什么这是正确的,并提供了枚举类型的其他见解。
答案 2 :(得分:0)
我同意NSWill。我最近有一个类似的错误比较问题。
权利if语句应该是:
if ((cellCorners & MyCellCornerTopLeft) == MyCellCornerTopLeft){