简介
在iOS开发中,我们在Apple SDK和第三方SDK中经常可以看到这样的位移枚举值,作用呢大家都知道可以同时使用多个,下面我说下位移运算符所需要使用到的一些预算符,并写一个简单示例
![系统.png](http://upload-images.jianshu.io/upload_images/2901013-d0ca52f7ce1b82d6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
系统.png
需要使用的运算符
<<
对二进制操作,进行整体向左位移操作末尾补0操作
如:
3//二进制为0011
6 = 3<<1//二进制为0110
12 = 3<<2//二进制为1100
{要位移的数}<<{位移的位数}|
对二进制操作,将二进制合并,有1则为1
6(0110) = 2(0010)|4(0100)&
对二进制操作,将二进制合并,同为1则为1
2(0010) = 2(0010)|6(0110)
定义枚举
typedef NS_ENUM(NSUInteger, WebViewType) {
WebViewTypeNor = 1, //0001 1
WebViewTypeTest1 = WebViewTypeNor << 1,//0010 2
WebViewTypeTest2 = WebViewTypeNor << 2,//0100 4
WebViewTypeTest3 = WebViewTypeNor << 3,//1000 8
};
使用枚举
WebViewType webType = WebViewTypeTest1 | WebViewTypeTest2;
if (webType & WebViewTypeNor) {
NSLog(@"this is WebViewTypeNor");
}
if (webType & WebViewTypeTest1) {
NSLog(@"this is WebViewTypeTest1");
}
if (webType & WebViewTypeTest2) {
NSLog(@"this is WebViewTypeTest2");
}
![输出.png](http://upload-images.jianshu.io/upload_images/2901013-334ae64514bd8377.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
输出.png