【问题标题】:What is the type of a enum in Objective-CObjective-C 中的枚举类型是什么
【发布时间】:2012-02-10 18:32:44
【问题描述】:

我只是想弄清楚这些值本身是否是 int、unsigned int、NSInteger。我以为我看到有人说它们是无符号整数,但在 Apple 的头文件中我看到它们用于存储负值。

【问题讨论】:

    标签: objective-c enums


    【解决方案1】:

    枚举是 C(和 C++)的特性,而不是 Objective-C。当你声明一个枚举时,你声明了一个新的 C 数据类型。

    给定枚举数据类型的大小可能是int 的大小,或者它可能仅大到足以容纳每个声明的枚举值。它是特定于编译器的,通常有编译器设置来控制枚举的处理方式。

    枚举的最大值可以是int,因此您始终可以将任何枚举值转换为int。反过来是不正确的;您不一定要将任何 int 转换为枚举值。

    【讨论】:

    • 比这更微妙一点。枚举类型本身是编译器相关的整数类型,可能小于int。但枚举 实际上只是整数常量。
    【解决方案2】:

    枚举整数最大为 32 位 signed ints。

    【讨论】:

      【解决方案3】:

      它是一个枚举类型。您可以定义自己的类型,该类型可以采用某些指定的值。

      看到这个问题: What is a typedef enum in Objective-C?

      所以如果你有一个像这样的枚举:

      typedef enum {    
         NBType1,
         NBType2,
         NBType2,
      } NBType
      

      传递给方法的参数类型为NBType

      【讨论】:

      • 但是枚举可以具有的值范围是多少。此外,如果一个方法正在从枚举中传递一个值但不知道它,那么参数的类型是什么。
      • 这将是您定义枚举的类型。
      猜你喜欢
      • 2010-10-16
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      相关资源
      最近更新 更多