Читая некоторую документацию здесь , я наткнулся на это:
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
Понятия не имею, как это работает. Я читал о побитовых операторах в C, но я не понимаю, как вы можете поместить три (или более!) Константы в одно целое, и позже сможете как-то извлечь их обратно из целого? Копаясь дальше в документации, я также нашел это, которое, вероятно, связано:
typedef enum {
kCFCalendarUnitEra = (1 << 1),
kCFCalendarUnitYear = (1 << 2),
kCFCalendarUnitMonth = (1 << 3),
kCFCalendarUnitDay = (1 << 4),
kCFCalendarUnitHour = (1 << 5),
kCFCalendarUnitMinute = (1 << 6),
kCFCalendarUnitSecond = (1 << 7),
kCFCalendarUnitWeek = (1 << 8),
kCFCalendarUnitWeekday = (1 << 9),
kCFCalendarUnitWeekdayOrdinal = (1 << 10),
} CFCalendarUnit;
Как работают операторы / переменные (1 << 3)
? Извините, если это тривиально, но кто-то может просветить меня, объяснив или, возможно, разместив ссылку на хорошее объяснение?