美文网首页
iOS枚举类型宏定义

iOS枚举类型宏定义

作者: chsasaw | 来源:发表于2016-08-19 11:47 被阅读234次

NS_ENUMNS_OPTIONS提供了简洁的枚举类型变量的定义方法。这两个方法定义了枚举变量的数据类型和名称,并且告诉系统所占用的空间大小。在旧的编译器上能够被正常编译,在新的编译器上能定义基本数据类型。

NS_ENUM用来定义互斥的枚举值,如:

typedef NS_ENUM(NSInteger, UITableViewCellStyle) {

    UITableViewCellStyleDefault,

    UITableViewCellStyleValue1,

    UITableViewCellStyleValue2,

    UITableViewCellStyleSubtitle

};

NS_OPTIONS用来定义互相包含的位移操作相关的枚举值,如:

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

};

这两个宏的定义在Foundation.framework的NSObjCRuntime.h中:

#if (__cplusplus && __cplusplus >= 201103L && (__has_extension(cxx_strong_enums) || __has_feature(objc_fixed_enum))) || (!__cplusplus && __has_feature(objc_fixed_enum))  
#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type  
#if (__cplusplus)  
#define NS_OPTIONS(_type, _name) _type _name; enum : _type  
#else  
#define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type  
#endif  
#else  
#define NS_ENUM(_type, _name) _type _name; enum  
#define NS_OPTIONS(_type, _name) _type _name; enum  
#endif  

typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {  

展开得到:

typedef enum UIViewAnimationTransition : NSInteger UIViewAnimationTransition;  
enum UIViewAnimationTransition : NSInteger {  

从枚举定义来看,NS_ENUM和NS_OPTIONS本质是一样的,仅仅从字面上来区分其用途。NS_ENUM是通用情况,NS_OPTIONS一般用来定义具有位移操作或特点的情况(bitmask)。
实际使用时,可以直接定义:

typedef enum : NSInteger {....} UIViewAnimationTransition;  

等效于上述定义。

相关文章

  • iOS枚举类型宏定义

    NS_ENUM和NS_OPTIONS提供了简洁的枚举类型变量的定义方法。这两个方法定义了枚举变量的数据类型和名称,...

  • iOS之规范1

    iOS之规范1 参考链接:参考1,参考2,参考3 枚举类型 枚举推荐使用NS_ENUM和NS_OPTIONS宏定义...

  • Swift 基础笔记 - 枚举

    枚举 OC定义和使用枚举 Swift定义枚举类型 Swift判断枚举类型 枚举成员类型

  • 枚举

    定义一个枚举 特殊类型enum类似oc的宏定义方法 在enum里定义函数 定义一个

  • C语言基础 之 枚举类型

    枚举类型 枚举类型: 列出所有可能的值 枚举类型的定义 枚举类型定义的一般格式:enum 枚举类型名 {枚举值表}...

  • 枚举

    枚举 枚举就是专门用来表示几种固定类型的取值 枚举的本质就是基本数据类型,整型 枚举类型定义格式 定义枚举类型变量...

  • IOS NSLog宏定义

    IOS NSLog宏定义 标签(空格分隔): IOS IOS NSLog宏定义 宏定义NSLog方法,不用加";"...

  • iOS_仿照frameworks的一些写法

    枚举定义 一些系统宏定义

  • 枚举类

    1.枚举类型的定义: 枚举类型定义的一般形式为 enum 枚举名{//枚举值表枚举值1;枚举值2;...} 在枚举...

  • java中enum枚举类型

    枚举类型常用方法:values()返回枚举类型定义数组ordinal()返回实例在枚举类型定义的次序,默认从0开始...

网友评论

      本文标题:iOS枚举类型宏定义

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