NS_ENUM和NS_OPTIONS区别
NS_ENUM
typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
UITableViewCellStyleDefault,
UITableViewCellStyleValue1,
UITableViewCellStyleValue2,
UITableViewCellStyleSubtitle
};
- NS_ENUM的第一个参数是用于存储的新类型的类型。在64位环境下,UITableViewCellStyle 和 NSInteger 一样有8bytes长。你要保证你给出的所有值能被该类型容纳,否则就会产生错误。第二个参数是新类型的名字。大括号里面和以前一样,是你要定义的各种值。
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");
}
区别:
NS_OPTIONS 经常用于位移类型的enum
NS_ENUM 经常用于普通enum