Objective-C/C给出枚举默认值

ban*_*isa 10 c enums enumeration objective-c

我在某处读到了枚举默认值,如下所示:

typedef enum  {
MarketNavigationTypeNone = 0,
MarketNavigationTypeHeirachy = 1,
MarketNavigationTypeMarket = 2
} MarketNavigationLevelType;
Run Code Online (Sandbox Code Playgroud)

..但我不记得这样做的价值.如果我不给他们默认值 - 然后有人后来重新排序枚举 - 有什么风险?

如果我总是使用枚举名称,甚至不用它们的整数值来引用它们,那么有任何风险吗?

我能想到的唯一可能的问题是,如果我从数据库中的int值初始化枚举 - 并且重新排序枚举 - 那么应用程序将会中断.

Geo*_*che 8

这不是默认值,您可以为它们提供始终具有的值.

如果您不明确初始化它们,则第一个枚举器值为零.对于所有其他人,如果没有初始化器,则它们的值是前一个枚举器的值增加1.

给出明确值的原因有两个:

  • 你不希望他们拥有他们所拥有的价值
  • 你想清楚它们有什么价值(为你或其他开发者)

如果您总是通过名称引用它们,并且从不明确地使用整数值进行比较或赋值,则不需要明确地给它们赋值.


Pau*_*l R 2

一般来说,只有当枚举暴露于某种外部 API 或者它将用于通过数据文件或其他方式交换数据时,这才重要。如果枚举仅在您的应用程序中使用,而没有在其他地方使用,那么实际值并不重要。