转载

iOS位运算实例

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

正文到此结束
Loading...