ios中的枚举类型

使用枚举和宏都可以使得程序简洁和易于修改。但在以下情况枚举是优于宏的:

当变量多的时候,枚举比宏更加容易修改,而且枚举的格式和多个宏定义相比更加易读。

在类型安全方面,枚举是类型安全的,宏定义不是类型安全的。例如:

#define RETURN_SUCCESS  0

#define TIME_OUT                  1

#define UNKONWN                 2

在超出这3中状态外,程序因匹配不到可能发生错误。



在ios中的枚举一般有两种形式

typedef NS_ENUM (NSInteger, ReturnType)   {

       ReturnSuccess = 0,

       TimeOut = 1,

       Unknown = 2

};

//除了上面的,还提供了方便进行位运算的枚举值 .可以将多种情况用一个变量表示,推荐使用。 (<<是左移运算符)

//通过位运算直接操控二进制,可以节约内存,加快程序。

typedef NS_OPTIONS (NSInteger, ReturnType)  {

         ReturnSuccess  =  0,    //              0

         NoNetwork = 1 << 1,    // 10         2

         Unknown = 1 <<  2,      // 100       4 

         NoService = 1 << 3       // 1000     8

};

我们可以对枚举值直接使用位运算符

  1.  将 TimeOut  和 Unknown 两种情况 归到一起  (按位或 | )

ReturnType FallingWood  = Unknown | TimeOut;    //  100  | 001    101    5

 2. 将对应的情况取出来 (按位与 &)

if (FallingWood & TimeOut) {

     NSLog(@"出错的情况中可能包括超时");

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自:http://mp.weixin.qq.com/s?__biz=MzA3NzM0NzkxMQ==&mid=...
    YYT1992阅读 731评论 3 0
  • 前言 Enum,也就是枚举,从C语言开始就有了,C++、Java、Objective-C、Swift这些语言,当然...
    脑路异常阅读 7,447评论 1 6
  • 枚举值: 它是一个整形(int) ,并且它不参加内存的占用和释放 枚举定义变量即可直接使用,不用初始化 三种类型的...
    Moker_C阅读 492评论 0 1
  • 参考资料 《编写高质量iOS与OS X代码的52个有效方法》中第5条:用枚举表示状态、选项、状态码 枚举类型的基本...
    水止云起阅读 2,566评论 0 3
  • 张零一皱了皱眉毛,把何欣嗅来嗅去的脑袋拍到了一边。 何欣不以为意地笑笑,跟她说:“你这身上又是鬼气又是妖气的,是去...
    照归轩阅读 335评论 0 3