Objective-C枚举,NS_ENUM和NS_OPTIONS

在Objective-C中创建具有特定类型的枚举的正确方法是什么? NS_ENUM和NS_OPTIONS如何工作? NS_OPTIONS用于掩码,如NSAutoresizing?谢谢。

Code from NSObjCRuntime.h
    #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
    #define NS_OPTIONS(_type, _name) _type _name; enum : _type
例如从NSHipster. NS_OPTIONS以类似的方式使用,但是对于通常是一个掩码的枚举

代替

typedef enum {
    UITableViewCellStyleDefault,
    UITableViewCellStyleValue1,
    UITableViewCellStyleValue2,
    UITableViewCellStyleSubtitle
} UITableViewCellStyle;

要么

typedef enum {
    UITableViewCellStyleDefault,
    UITableViewCellStyleValue1,
    UITableViewCellStyleValue2,
    UITableViewCellStyleSubtitle
};

typedef NSInteger UITableViewCellStyle;

做这个:

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
};
http://stackoverflow.com/questions/14080750/objective-c-enumeration-ns-enum-ns-options

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Objective-C枚举,NS_ENUM和NS_OPTIONS