【Android基础学IOS开发】NS_ENUM 和 NS_OPTIONS
2014-05-08 15:33
337 查看
在iOS6和Mac OS 10.8以后Apple引入了两个宏来重新定义这两个枚举类型,实际上是将enum定义和typedef合二为一,并且采用不同的宏来从代码角度来区分。
使用NS_ENUM宏来定义一组是互斥的值:
typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
UITableViewCellStyleDefault,
UITableViewCellStyleValue1,
UITableViewCellStyleValue2,
UITableViewCellStyleSubtitle
};
使用NS_OPTIONS宏来定义一组位移可以通过OR或者AND运算的枚举值:
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};虽然官方是这么解释的,但实际应用中这两种用法可以混合使用没啥区别,并不会报错。应该在底层的处理还是不同的。
使用NS_ENUM宏来定义一组是互斥的值:
typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
UITableViewCellStyleDefault,
UITableViewCellStyleValue1,
UITableViewCellStyleValue2,
UITableViewCellStyleSubtitle
};
使用NS_OPTIONS宏来定义一组位移可以通过OR或者AND运算的枚举值:
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};虽然官方是这么解释的,但实际应用中这两种用法可以混合使用没啥区别,并不会报错。应该在底层的处理还是不同的。
相关文章推荐
- (0064)iOS开发之枚举NS_ENUM和NS_OPTIONS的区别
- iOS开发 枚举类型NS_ENUM和NS_OPTIONS的区别
- iOS开发中 中NS_ENUM与NS_OPTIONS区别
- iOS开发学习专题-基础知识(一)NSString NSMutableString NSRange NSNotFound详细使用方式
- Objective-C ,ios,iphone开发基础:NSDictionary(字典) 和 NSMutableDictionary
- iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS:枚举enum,NS_ENUM,NS_OPTIONS 定义和 位运算应用
- IOS开发基础之NSBundle
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS,Android软件开发培训基础内容对比(一)
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- 【Android基础学IOS开发】从Java转向Objective-c
- iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS