一般情況下我們在開發中可以采用C風格的enum 關鍵字定義枚舉類型
enum{
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
}
位移動操作枚舉定義
enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;
//使用NSUInteger的地方可以使用UIViewAutoresizing,//UIViewAutoresizing相當于NSUInteger的一個別名使用
//因此一個UIViewAutoresizing的變量可以直接賦值給NSUInteger
枚舉值一般是4個字節的int值,在64位系統上是8個字節
typedef NS_ENUM(NSInteger, UIBarButtonItemStyle) {
UIBarButtonItemStylePlain,// 默認從0開始
UIBarButtonItemStyleBordered,
UIBarButtonItemStyleDone,
};
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
};
這兩個宏的定義在framework的NSObjCRuntime中
包
定義
從枚舉定義來看,NS_ENUM和NS_OPTIONS本質是一樣的。NS_ENUM是通用情況,NS_OPTIONS一般用來定義具有位移操作或特點的情況