"枚举"类型常量中的数据类型是什么?如何将其添加到NSArray?

1 iphone cocoa-touch uikit

这种枚举类型的东西背后存储了什么样的信息?例:

typedef enum {
    UIViewAnimationCurveEaseInOut,
    UIViewAnimationCurveEaseIn,
    UIViewAnimationCurveEaseOut,
    UIViewAnimationCurveLinear
} UIViewAnimationCurve;
Run Code Online (Sandbox Code Playgroud)

我不确定我是否可以安全地将这样的枚举常量添加到数组中.任何的想法?

Pau*_*abe 7

Objective-C中的枚举与C中的枚举完全相同.枚举中的每个项目都会自动赋予一个整数值,默认情况下从零开始.

对于您提供的示例:UIViewAnimationCurveEaseInOut将为0; UIViewAnimationCurveEaseIn将为1,依此类推.

如果需要,您可以指定枚举的值:

typedef enum {
    UIViewAnimationCurveEaseInOut,
    UIViewAnimationCurveEaseIn = 0,
    UIViewAnimationCurveEaseOut,
    UIViewAnimationCurveLinear
} UIViewAnimationCurve;
Run Code Online (Sandbox Code Playgroud)

这样的结果将是:UIViewAnimationCurveEaseInOut为0; UIViewAnimationCurveEaseIn为0; UIViewAnimationCurveEaseOut是1; 等等.但是,出于基本目的,您不需要做任何类似的事情; 它只是给你一些有用的信息玩具.

应该注意,基于上述内容,枚举不能假定为唯一值; 不同的枚举标识符可以彼此相等.

将枚举项添加到NSArray就像添加整数一样简单.唯一的区别是你使用枚举标识符.

[myArray addObject:[NSNumber numberWithInt:UIViewAnimationCurveEaseInOut]];
Run Code Online (Sandbox Code Playgroud)

您可以通过简单地将每个枚举输出到控制台并检查它为您提供的值来自行检查.这使您有机会调查其运作方式的详细信息.但是在大多数情况下,你不需要每天都知道.