枚举
/*
在Mac OS 10.8后apple引入两个宏来定义枚举类型:
1、NS_ENUM 是通用情况
2、NS_OPTIONS 定义具有位移操作的或特点的情况
位运算
1、&:两个都为1时,才为1,反之为0;
2、|:有一个为1时,才为1,反之为0;
3、^:两个不同为1,反之为0;
4、~:取反
5、<<:左位移,空位补0;
6、>>:右位移,空位补0.
*/
typedef NS_ENUM(NSInteger,ANIMALTYPE){
DOG,
CAT,
FISH
};
typedef NS_OPTIONS(NSInteger, DIRECTION){
EAST = 0,
SOUTH = 1 << 0,
WEST = 1 << 1,
NORTH = 1 << 2
};
位移枚举使用
/*
0000 0000 0 (EAST)
0000 0001 0000 0001 2^0 = 1 (SOUTH)
0000 0001 0000 0010 2^1 = 2 (WEST)
0000 0001 0000 0100 2^2 = 4 (NORTH)
EAST | SOUTH
0000 0000
0000 0001
0000 0001
SOUTH | WEST
0000 0001
0000 0010
0000 0011 2^1+2^0 = 3
WEST | NORTH
0000 0010
0000 0100
0000 0110 2^2 + 2^1 = 6
*/
(按位或 保证或之后结果不会重复)。
记录下,仅供参考!