NS_ENUM和NS_OPTIONS区别

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容