我今天读到了关于按位运算符的内容,它们对我来说似乎很方便。我也注意到Apple也使用它们,例如使用UIViewAutoresizing
。
在我的应用中,我需要跟踪一周中的七天。每天都可以启用或禁用。我曾经有七个BOOL
,但现在我正在尝试使用一个整数:
enum {
DaysMonday = 1 << 0,
DaysTuesday = 1 << 1,
DaysWednesday = 1 << 2,
DaysThursday = 1 << 3,
DaysFriday = 1 << 4,
DaysSaturday = 1 << 5,
DaysSunday = 1 << 6
};
typedef NSUInteger Days;
我的问题是,我现在如何启用/禁用这些值?我知道我可以在特定日期检查变量days
,如下所示:
if (days & DaysThursday) {
// thursday enabled
}
但我该怎么做..
谢谢。
答案 0 :(得分:26)
我对objective-c不太熟悉,但这里是处理按位运算符时的基础知识。
启用星期四
days = days | DaysThursday;
禁用星期四
allDays = DaysMonday | DaysTuesday | ... | DaysSunday;
days = days & (allDays ^ DaysThursday);
// OR
days = days & ~DaysThursday;
周四切换
days = days ^ DaysThursday;
全部启用
allDays = DaysMonday | DaysTuesday | ... | DaysSunday;
days = days | allDays;
// OR
days = allDays;
全部禁用
days = days ^ days;
// OR
days = 0;
答案 1 :(得分:3)
days = DaysMonday | DaysWednesday | DaysFriday | DaysSaturday;
days = days | DaysThursday;
days = days & ~DaysSaturday;