美文网首页
NS_ENUM和NS_OPTIONS区别

NS_ENUM和NS_OPTIONS区别

作者: 着魔的毛豆 | 来源:发表于2016-04-01 16:53 被阅读129次

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

相关文章

网友评论

      本文标题:NS_ENUM和NS_OPTIONS区别

      本文链接:https://www.haomeiwen.com/subject/dgsylttx.html