typedefNS_OPTIONS(NSUInteger, UIRectCorner) {
UIRectCornerTopLeft =1<<0,
UIRectCornerTopRight =1<<1,
UIRectCornerBottomLeft =1<<2,
UIRectCornerBottomRight =1<<3,
UIRectCornerAllCorners = ~0UL
};
拿这个来说吧,我们用枚举的时候,都是UIRectCornerTopLeft或者UIRectCornerTopRigh传进去,但是有的人传一个0或者(和)2就能正确调用,那是因为人家做枚举的时候用了NSUInteger这个,那么1<<0是啥意思呢?
简单说吧,位移不仅仅是这么点,我没呢今天直说枚举中的位移计算
1<<0 : 1是二进制中的1,也就是0001,<<是左移符号,0是左移几个(这不用位,怕混了),
so : 1<<0 就是 0001 左移0位还是0001 ,也就是当我们要UIRectCornerTopLeft可以传入十进制的1;
1<<1 就是0001左移1位就是0010 ,UIRectCornerTopRight我们就传入十进制的2;
其他的自己玩吧,二进制转十进制的算法自己算: