貓貓學(xué)iOS之|(或)的理解冀痕,哪些地方的枚舉能直接用|(或)連接判斷

貓貓分享福铅,必須精品

原創(chuàng)文章萝毛,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:翟乃玉的博客
地址:http://www.reibang.com/notebooks/4236923/latest

一:問題來源

最早時候滑黔,貓在學(xué)習(xí)通知時候(是系統(tǒng)通知不是NSNotificationCenter)用到一種很奇特的寫法:

    //注冊通知
    if ([UIDevice currentDevice].systemVersion.doubleValue<8.0) {
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];
    }
    else {
        [[UIApplication sharedApplication] registerForRemoteNotifications];
        [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil]];
    }

這里在判斷系統(tǒng)盤本后的設(shè)置中笆包,我們用到了|符號來做連接。


111.png

這里用或符號略荡,可以實(shí)現(xiàn)多選的效果庵佣,于是貓貓就像,我去汛兜,好牛逼巴粪,然后在有一次設(shè)置圖片的時候,貓貓想讓一張圖片既要自動填充又要自動粥谬。肛根。。說的好暈漏策,就是想設(shè)置view的contentMode可以用兩個枚舉派哲,比如UIViewContentModeTop | UIViewContentModeScaleAspectFill這樣寫。
然后貓就發(fā)現(xiàn)掺喻,貓?zhí)煺媪税沤欤娴臎]用储矩。

二:解決

其實(shí)當(dāng)時的問題并沒有解決,只是說貓搞明白了為何用有的地方用或可以喉脖,而有的地方就不能用或椰苟。

1:發(fā)現(xiàn)

  • 首先我們進(jìn)入UIViewContentMode的代碼當(dāng)中。

    Snip20160627_7.png

    這里可以看到树叽,不能用或連接的定義的枚舉是這樣的舆蝴。

  • 然后我們進(jìn)入UIUserNotificationType的代碼當(dāng)中。

    Snip20160627_8.png

    可以用或來連接的枚舉是這樣的题诵,用1 << 0 (位運(yùn)算左移來定義的)

2:猜測

于是很容易洁仗,貓猜測肯定跟這個枚舉的定義是否用左移來定義有關(guān)系,經(jīng)過測試性锭,所有的枚舉 << 定義的都可以用 | 來連接赠潦,做判斷,其他的都不行草冈,只能一個一個的她奥。

3:驗(yàn)證

  • 定義以下代碼:
int a = 1 << 0; // 1 0001
int b = 1 << 1; // 2 0010
int c = 1 << 2; // 4 0100
int d = 1 << 3; // 8 1000

void content(int value)
{
    if (value & a) NSLog(@"value里面有a");
    if (value & b) NSLog(@"value里面有b");
    if (value & c) NSLog(@"value里面有c");
    if (value & d) NSLog(@"value里面有d");
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        content(a | b | c | d);
   }
    return 0;
}
  • 運(yùn)行結(jié)果:
Snip20160627_15.png
  • 解析
    其實(shí)iOS底層就是這么做的,原理八九不離十怎棱,主要運(yùn)用了 & 和 | 的運(yùn)算符的特性:
    *** | 或 : 只要有1個是1, 結(jié)果就是1***
    *** & 與 : 只有2個都是1, 結(jié)果才是1***
    以及:
    *** 1 << n == 2的n次方***

然后可知哩俭,當(dāng)我們用左移來定義時候,可以得到:
int a = 1 << 0 = 1 = 0001
int b = 1 << 1 = 2 = 0010
int c = 1 << 2 = 4 = 0100
int d = 1 << 3 = 8 = 1000
然后可以看出拳恋,abcd分別代表二進(jìn)制的某一位是1凡资,而進(jìn)行&運(yùn)算,就能得到了谬运。

  • 重點(diǎn):
    與和或就記住下面的就行了隙赁,實(shí)在不行就用系統(tǒng)自帶的計算器吧。
    *** | 或 : 只要有1個是1, 結(jié)果就是1***
    *** & 與 : 只有2個都是1, 結(jié)果才是1***
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梆暖,一起剝皮案震驚了整個濱河市伞访,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轰驳,老刑警劉巖厚掷,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滑废,居然都是意外死亡蝗肪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門蠕趁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薛闪,“玉大人,你說我怎么就攤上這事俺陋』硌樱” “怎么了昙篙?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诱咏。 經(jīng)常有香客問我苔可,道長,這世上最難降的妖魔是什么袋狞? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任焚辅,我火速辦了婚禮,結(jié)果婚禮上苟鸯,老公的妹妹穿的比我還像新娘同蜻。我一直安慰自己,他們只是感情好早处,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布湾蔓。 她就那樣靜靜地躺著,像睡著了一般砌梆。 火紅的嫁衣襯著肌膚如雪默责。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天咸包,我揣著相機(jī)與錄音桃序,去河邊找鬼。 笑死诉儒,一個胖子當(dāng)著我的面吹牛葡缰,可吹牛的內(nèi)容都是我干的亏掀。 我是一名探鬼主播忱反,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼滤愕!你這毒婦竟也來了温算?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤间影,失蹤者是張志新(化名)和其女友劉穎注竿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魂贬,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巩割,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了付燥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宣谈。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖键科,靈堂內(nèi)的尸體忽然破棺而出闻丑,到底是詐尸還是另有隱情漩怎,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布嗦嗡,位于F島的核電站勋锤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侥祭。R本人自食惡果不足惜叁执,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矮冬。 院中可真熱鬧徒恋,春花似錦、人聲如沸欢伏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硝拧。三九已至径筏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間障陶,已是汗流浹背滋恬。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抱究,地道東北人恢氯。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像鼓寺,于是被迫代替她去往敵國和親勋拟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,871評論 6 13
  • 今天妈候,我去游泳了敢靡。我又教會了一個朋友游泳,這一次用的時間更短苦银,她學(xué)會游泳時非常高興啸胧,因?yàn)樗吲d我也感覺到非常快樂幔虏。...
    了凡耕讀閱讀 271評論 0 1
  • 很奇怪纺念,宿舍六個妹子,有三個人大學(xué)都上了一半了想括,至今未脫過一次單陷谱,當(dāng)然其中包括我。 你說丑嗎主胧? 單看外貌的話叭首,我不...
    張希希啊閱讀 2,615評論 65 22
  • 當(dāng)網(wǎng)絡(luò)紅人這個詞剛剛進(jìn)入人們視野時焙格,芙蓉姐姐和鳳姐先后以出位的言行吸引了大眾注意图毕。前一個扭著夸張的S型,以“我最美...
    斯坦威閱讀 187評論 1 0
  • 日光之必要 果腹之必要 微笑之必要 有趣的靈魂之必要 音樂之必要 旅行之必要 灑脫的酣暢之必要 云卷云舒之必要 狂...
    洛熙_閱讀 162評論 0 0