typedefNS_OPTIONS(NSUInteger, UIRectCorner) {
? ? UIRectCornerTopLeft? ? =1<<0,
? ? UIRectCornerTopRight? ? =1<<1,
? ? UIRectCornerBottomLeft? =1<<2,
? ? UIRectCornerBottomRight =1<<3,
? ? UIRectCornerAllCorners? = ~0UL
};
拿這個來說吧,我們用枚舉的時候,都是UIRectCornerTopLeft或者UIRectCornerTopRigh傳進去,但是有的人傳一個0或者(和)2就能正確調(diào)用,那是因為人家做枚舉的時候用了NSUInteger這個,那么1<<0是啥意思呢?
簡單說吧,位移不僅僅是這么點,我沒呢今天直說枚舉中的位移計算
1<<0 ? ? : ? ?1是二進制中的1,也就是0001,<<是左移符號,0是左移幾個(這不用位,怕混了),
so ? :?1<<0 就是 0001 左移0位還是0001 ,也就是當(dāng)我們要UIRectCornerTopLeft可以傳入十進制的1;
1<<1 ?就是0001左移1位就是0010 ,UIRectCornerTopRight我們就傳入十進制的2;
其他的自己玩吧,二進制轉(zhuǎn)十進制的算法自己算: