NS_OPTIONS的作用是对于一个状态可以有多个取值而设计的,比如如果给按钮设置圆角,那么有上下左右4个方向,而你可以只设置左边有圆角,也可以设置左边和右边有圆角,这样就有很多种排列组合。
首先定义一个NS_OPTIONS
//NS_OPTIONS,定义选项
typedef NS_OPTIONS(NSUInteger, ExampleOption) {
ExampleOptionNone = 0, //二进制0000,十进制0
ExampleOptionLeft = 1 << 0, //0001,2的0次幂 1
ExampleOptionRight = 1 << 1, //0010,2的1次幂 2
ExampleOptionTop = 1 << 2, //0100,2的2次幂 4
ExampleOptionBottom = 1 << 3, //1000,2的3次幂 8
};
使用:
//声明定义枚举变量
//0001 | 0010 = 0011,3
ExampleOption option = ExampleOptionLeft | ExampleOptionRight;
//检查是否包含某选型
if ( option & ExampleOptionTop ){ //0011 & 0100 = 0000
//包含ExampleOptionTop
}else{
//不包含ExampleOptionTop
}
//增加选项:
//0011 | 1000 = 1011, 11
option = option | ExampleOptionsBottom;
//减少选项
//1011 & (~1000) = 1011 & 0111 = 0011, 3
option = option & (~ ExampleOptionsBottom);