Objective C具有case / switch的全局常量
有没有什么办法可以在Objective C中使用全局int常量,在case / switch语句中工作? 这里的技术(http://stackoverflow.com/questions/538996/constants-in-objective-c)让我可以随时访问常量,但不会让我把它们放到switch语句中。
在.h
FOUNDATION_EXPORT const int UNIT_IDLE;
FOUNDATION_EXPORT const int UNIT_DEFEND;
以.m
int const UNIT_IDLE = 0;
int const UNIT_DEFEND = 1;
错误是“表达式不是一个整数常量表达式”
当我使用常量时,我通常在typedef语句中使用枚举,我将在switch语句中使用这些常量。
例如,这将位于共享的.h文件中,例如ProjectEnums.h:
enum my_custom_unit
{
MyCustomUnitIdle = 1,
MyCustomUnitDefend = 2
};
typedef enum my_custom_unit MyCustomUnit;
然后,我可以在我的.c,.m,.cpp文件中使用与以下switch语句类似的代码:
#import "ProjectEnums.h"
- (void) useUnit:(MyCustomUnit)unit
{
switch(unit)
{
case MyCustomUnitIdle:
/* do something */
break;
case MyCustomUnitDefend:
/* do something else */
break;
default:
/* do some default thing for unknown unit */
break;
};
return;
};
这也允许编译器在编译时验证传递给该方法的数据并在switch语句中使用。
我认为你最好的选择是使用enum types
。 只需在头文件中声明一个类型,然后就可以在switch语句中使用它了。
class.h
typedef enum{
kEditGameModeNewGame = 0,
kEditGameModeEdit = 1
}eEditGameMode;
class.m
eEditGameMode mode = kEditGameModeEdit;
switch (mode) {
case kEditGameModeEdit:
// ...
break;
case kEditGameModeNewGame:
// ...
break;
default:
break;
}
祝你好运!
官方指导说你应该使用“枚举来表示具有整数值的相关常量组。 这可能会解决您的问题并改善代码。
链接地址: http://www.djcxy.com/p/84437.html上一篇: Objective C global constants with case/switch
下一篇: switch case statement error: case expressions must be constant expression