completionHandler(UNNotificationPresentationOptionBadge| UNNotificationPresentationOptionSound| UNNotificationPresentationOptionAlert);
这段代码是不是很眼熟?
这段代码在做APNS推送时有用到,需要设置推送的提醒方式,这里的意思是,提醒方式为:徽标或声音或提示框。
以下代码就是我们今天要讲到的内容,位运算的一个例子,可以尝试打印,控制台输出结果是:7
NSLog(@"%lu",UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound| UNNotificationPresentationOptionAlert)
这个结果是怎么来的呢?
按住 option 键,将鼠标移动到 UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound| UNNotificationPresentationOptionAlert 上面,可以看到如下:
typedef NS_OPTIONS(NSUInteger, UNNotificationPresentationOptions) { UNNotificationPresentationOptionBadge = (1 << 0), UNNotificationPresentationOptionSound = (1 << 1), UNNotificationPresentationOptionAlert = (1 << 2), } __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
UNNotificationPresentationOptionBadge = (1 << 0) : 表示00000001左移0位 = 00000001
UNNotificationPresentationOptionSound = (1 << 1):表示00000001左移1位 = 00000010
UNNotificationPresentationOptionAlert = (1 << 2) :表示00000001左移2位 = 00000100
位运算怎么计算,这里就不多说了,自己可以谷歌搜一下
这里|是或运算,也就是:00000001 | 00000010 | 00000100 = 00000111 = 4 + 2 + 1 = 7
tips: 二进制转十进制的口算其实很简单,以8bit为例子:1111 1111,从右往左,“1”分别表示:1,2,4,8,16,32,64,128。也就是哪1位有1就将该位对应的十进制数相加即可。
作者:F森,转载请联系作者获得授权