关闭

枚举类型 enum,NS_ENUM,NS_OPTIONS

标签: enum枚举
275人阅读 评论(0) 收藏 举报
分类:

枚举值一般是4个字节的int值,在64位系统上是8个字节。
在iOS6和Mac OS 10.8以后Apple引入了两个宏来重新定义这两个枚举类型,实际上是将enum定义和typedef合二为一,并且采用不同的宏来从代码角度来区分。
NS_OPTIONS一般用来定义位移相关操作的枚举值,我们可以参考UIKit.Framework的头文件,可以看到大量的枚举定义。

enum建议使用 NS_ENUM 和 NS_OPTIONS 宏来定义枚举类型

之前是:

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

之后为:

typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
        UITableViewCellStyleDefault,
        UITableViewCellStyleValue1,
        UITableViewCellStyleValue2,
        UITableViewCellStyleSubtitle
};

之前:

enum {
        UIViewAutoresizingNone                 = 0,
        UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
        UIViewAutoresizingFlexibleWidth        = 1 << 1,
        UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
        UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
        UIViewAutoresizingFlexibleHeight       = 1 << 4,
        UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;

之后:

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和NS_OPTIONS本质是一样的,仅仅从字面上来区分其用途。NS_ENUM是通用情况,NS_OPTIONS一般用来定义具有位移操作或特点的情况(bitmask)。

0
0
查看评论

枚举类型 enum,NS_ENUM,NS_OPTIONS

一般情况下,我们采用C风格的enum关键字可以定义枚举类型。 [cpp] view plaincopy enum{        UIViewAnimationT...
  • war3pc
  • war3pc
  • 2014-11-10 16:18
  • 432

NS_ENUM 和 NS_OPTIONS的区别

在苹果的一篇官方文档《Adopting Modern Objective-C》“适应现代的Objectice-c”中提及到使用NS_ENUM和NS_OPTIONS来声明枚举 NS_ENUM用来声明基于一般整形的枚举,而NS_OPTIONS一般用来声明基于位掩码的声明(bitmask) 在一般的教...
  • u013230511
  • u013230511
  • 2014-12-16 20:25
  • 2398

iOS:枚举enum,NS_ENUM,NS_OPTIONS 定义和 位运算应用

--参考文章:http://blog.csdn.net/annkie/article/details/9877643 ==定义------------
  • houseq
  • houseq
  • 2014-05-15 11:49
  • 2913

iOS开发 枚举类型NS_ENUM和NS_OPTIONS的区别

iOS开发 枚举类型NS_ENUM和NS_OPTIONS的区别
  • royal_mjz
  • royal_mjz
  • 2017-04-06 13:43
  • 630

枚举enum、NS_ENUM 、NS_OPTIONS

枚举enum、NS_ENUM 、NS_OPTIONS
  • wang1514869032
  • wang1514869032
  • 2016-08-08 16:47
  • 485

iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS

一般情况下,我们采用C风格的enum关键字可以定义枚举类型。 [cpp] view plaincopy enum{        UIViewAnimationTra...
  • happyrabbit456
  • happyrabbit456
  • 2014-03-14 11:16
  • 524

iOS 枚举类型 enum NS_ENUM NS_OPTIONS

iOS 枚举类型 enum NS_ENUM NS_OPTIONS
  • RainShenJi
  • RainShenJi
  • 2015-03-04 16:16
  • 591

iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS

一般情况下,我们采用C风格的enum关键字可以定义枚举类型。  有时候NS_ENUM会在ios8上报错 换成 typedef enum就可以 enum{        UIVie...
  • zhangkongzhongyun
  • zhangkongzhongyun
  • 2015-05-18 16:37
  • 701

NS_ENUM & NS_OPTIONS

一切皆为对象。 其实有很多种方式你可以在面向过程和面向对象间互相转化,但本文的目的是:有时候抛弃C层面的东西也是很好的。 是的——对于这种Smalltalk一样杂交而成的语言中的非面向对象部分而言,C语言是很有魅力的一部分。它速度快、久经考验,是现代计算最核心的部分。而且当面向对象范式处...
  • hmxhh
  • hmxhh
  • 2014-11-13 15:22
  • 728

enum,NS_ENUM和NS_OPTIONS

枚举的类型//枚举1 enum{ type0=0, type1=1, type2=2 }Types;//枚举2 enum Types{ type3=0, type4=1, type5=2 };//位移操作枚举的定义 enum{ weather0=0, w...
  • zww1984774346
  • zww1984774346
  • 2016-01-22 13:32
  • 295
    个人资料
    • 访问:93842次
    • 积分:1958
    • 等级:
    • 排名:千里之外
    • 原创:100篇
    • 转载:54篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论