typedef NS_ENUM 和 typedef NS_OPTIONS

typedef NS_ENUM

NS_ENUM 的第一個參數(shù)是用于存儲的新類型的類型且预。在64位環(huán)境下荧飞,UITableViewCellStyle 和 NSInteger 一樣有8bytes長。你要保證你給出的所有值能被該類型容納滓玖,否則就會產(chǎn)生錯誤(8個字節(jié)的長度很長啦坪哄,一般不會超過)。第二個參數(shù)是新類型的名字。大括號里面和以前一樣模暗,是你要定義的各種值念祭。

typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
    UITableViewCellStyleDefault,    // 0
    UITableViewCellStyleValue1,     // 1
    UITableViewCellStyleValue2,     // 2
    UITableViewCellStyleSubtitle    // 3
}; 

默認情況下,是從0開始隶糕,然后遞增1的賦值站玄,當然你也可以給其賦值

typedef NS_ENUM(NSInteger, XXTableViewCellStyle) {
    XXTableViewCellStyleValue1 = 0,  //值為0    
    XXTableViewCellStyleValue2,  //值為1
    XXTableViewCellStyleSubtitle //值為2       
};
//或者這樣
typedef NS_ENUM(NSInteger, XXTableViewCellStyle) {
    XXTableViewCellStyleValue1 = 0,  //值為0    
    XXTableViewCellStyleValue2 = 2,  //值為2
    XXTableViewCellStyleSubtitle  //值為3       
};

typedef NS_OPTIONS

不像 NS_ENUM 株旷,位掩碼用 NS_OPTIONS 宏。用簡單的OR (|)和AND (&)數(shù)學(xué)運算即可實現(xiàn)對一個整型值的編碼晾剖。每一個值不是自動被賦予從0開始依次累加1的值钞瀑,而是手動被賦予一個帶有一個bit偏移量的值:類似1 << 0慷荔、 1 << 1、 1 << 2等贷岸。
語法和 NS_ENUM 完全相同磷雇,但這個宏提示編譯器值是如何通過位掩碼 | 組合在一起的。同樣的螟蒸,注意值的區(qū)間不要超過所使用類型的最大容納范圍崩掘。

typedef NS_OPTIONS(NSUInteger, UITableViewCellStateMask) {
    UITableViewCellStateDefaultMask                     = 0,       //其值0
    UITableViewCellStateShowingEditControlMask          = 1 << 0,  //其值為2的0次方
    UITableViewCellStateShowingDeleteConfirmationMask   = 1 << 1   //其值為2的1次方
};

NS_OPTIONS的值可以同時存在,而NS_ENUM定義的枚舉不能幾個枚舉項同時存在苞慢,只能選擇其中一項

得出結(jié)論,需要值同時存在的時候就要用NS_OPTIONS绍赛, 不需要時用NS_ENUM就能滿足需求了。

總結(jié)此吗蚌,來源于對SDWebImage的源碼解讀。SDWebImageOptions 的值可以多選哦猴誊。

typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) {
    /**
     * By default, when a URL fail to be downloaded, the URL is blacklisted so the library won't keep trying.
     * This flag disable this blacklisting.
     */
    SDWebImageRetryFailed = 1 << 0,

    SDWebImageLowPriority = 1 << 1,

    SDWebImageCacheMemoryOnly = 1 << 2,

    SDWebImageProgressiveDownload = 1 << 3,

    SDWebImageRefreshCached = 1 << 4,

    SDWebImageContinueInBackground = 1 << 5,

    SDWebImageHandleCookies = 1 << 6,

    SDWebImageAllowInvalidSSLCertificates = 1 << 7,

    SDWebImageHighPriority = 1 << 8,
    
    SDWebImageDelayPlaceholder = 1 << 9,

    SDWebImageTransformAnimatedImage = 1 << 10,
    
    SDWebImageAvoidAutoSetImage = 1 << 11,

    SDWebImageScaleDownLargeImages = 1 << 12
};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懈叹,一起剝皮案震驚了整個濱河市分扎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌墨状,老刑警劉巖菲饼,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宏悦,死亡現(xiàn)場離奇詭異饼煞,居然都是意外死亡,警方通過查閱死者的電腦和手機砖瞧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門块促,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人持隧,你說我怎么就攤上這事√悠” “怎么了屡拨?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵只酥,是天一觀的道長。 經(jīng)常有香客問我裂允,道長,這世上最難降的妖魔是什么哥艇? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮貌踏,結(jié)果婚禮上十饥,老公的妹妹穿的比我還像新娘。我一直安慰自己祖乳,他們只是感情好逗堵,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布眷昆。 她就那樣靜靜地躺著蜒秤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亚斋。 梳的紋絲不亂的頭發(fā)上作媚,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天帅刊,我揣著相機與錄音纸泡,去河邊找鬼。 笑死赖瞒,一個胖子當著我的面吹牛冒黑,可吹牛的內(nèi)容都是我干的勤哗。 我是一名探鬼主播冬竟,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泵殴!你這毒婦竟也來了笑诅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吆你,沒想到半個月后弦叶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡妇多,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年伤哺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片者祖。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖七问,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情媒熊,我是刑警寧澤坟比,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站柠衅,受9級特大地震影響籍琳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喝峦,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一谣蠢、第九天 我趴在偏房一處隱蔽的房頂上張望查近。 院中可真熱鬧,春花似錦谈喳、人聲如沸戈泼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吆录,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恢筝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工此改, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侄柔,地道東北人暂题。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像纵苛,于是被迫代替她去往敵國和親言津。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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

  • 轉(zhuǎn)載自:http://mp.weixin.qq.com/s?__biz=MzA3NzM0NzkxMQ==&mid=...
    YYT1992閱讀 712評論 3 0
  • 對于OC中的枚舉類型初婆,雖然知道有NS_ENUM和NS_OPTION,然而并不是十分清楚它們之間的區(qū)別烟逊。另外宪躯,也很好...
    ePan閱讀 18,367評論 1 14
  • 0位迂、背景 在iOS6和Mac OS 10.8以后Apple引入了兩個宏來重新定義這兩個枚舉類型详瑞,實際上是將enum...
    Lovell_閱讀 218評論 0 0
  • 枚舉值: 它是一個整形(int) ,并且它不參加內(nèi)存的占用和釋放 枚舉定義變量即可直接使用,不用初始化 三種類型的...
    Moker_C閱讀 473評論 0 1
  • 說明:本篇文章是作者(Mitchell)參考蘋果的 Adopting Modern Objective-C 這篇文...
    Mitchell閱讀 908評論 0 3