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就将该位对应的十进制数相加即可。
网友评论