NS_ENUM和NS_OPTIONS區(qū)別
NS_ENUM
typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
UITableViewCellStyleDefault,
UITableViewCellStyleValue1,
UITableViewCellStyleValue2,
UITableViewCellStyleSubtitle
};
- NS_ENUM的第一個參數(shù)是用于存儲的新類型的類型研侣。在64位環(huán)境下,UITableViewCellStyle 和 NSInteger 一樣有8bytes長。你要保證你給出的所有值能被該類型容納旷档,否則就會產(chǎn)生錯誤楞捂。第二個參數(shù)是新類型的名字梁丘。大括號里面和以前一樣,是你要定義的各種值喝噪。
NS_OPTIONS
typedef NS_OPTIONS(NSUInteger, Margin) {
GKMarginNone = 0,
GKMarginTop = 1<<0,
GKMarginLeft = 1<<1,
GKMarginBottom = 1<<2,
GKMarginRight = 1<<3
};
// 定義
Margin margin = GKMarginLeft | GKMarginTop | GKMarginRight;
// 解析
if (margin & GKMarginLeft) {
NSLog(@"GKMarginLeft");
}
if (margin & GKMarginTop) {
NSLog(@"GKMarginTop");
}
if (margin & GKMarginBottom) {
NSLog(@"GKMarginBottom");
}
if (margin & GKMarginRight) {
NSLog(@"GKMarginRight");
}
區(qū)別:
NS_OPTIONS 經(jīng)常用于位移類型的enum
NS_ENUM 經(jīng)常用于普通enum