这是在Objective-C中使用emum的正确(甚至是有效的方式)吗?即不使用menuItem,而只是定义列表add=1、load=2、list=3等。
enum menuItems {
add = 1 ,
save ,
load ,
list ,
removeAll ,
remove ,
quit
};
int optionSelect;
scanf("%d", &optionSelect);
switch (optionSelect) {
case add:
//...
break;
}干杯加里
发布于 2009-11-03 01:38:05
如果您想赋予枚举一个语义含义,您可以考虑定义一个自定义类型,并将变量"optionSelect“声明为该类型的变量!用代码..。
typedef enum menuItems {
add = 1,
save,
load,
list,
removeAll,
remove,
quit} MenuItem;
MenuItem optionSelect;
scanf("%d", &optionSelect);
switch (optionSelect) {
case add:
...
break;
.
.
.
}这几乎与您编写的内容相同,但从开发人员的角度来看,您为变量"optionSelect“赋予了特殊的含义,而不仅仅是一个简单的int!
发布于 2013-10-05 08:43:07
在这种情况下,在未来,提到NS_ENUM可能也会有所帮助。你可以像这样使用它:
typedef NS_ENUM(uint16_t, TYEnummedType)
{
TYEnummedType1,
TYEnummedType2
};这几乎与普通的enum和typedef具有相同的效果,但显式地指定了整数类型,如果你想把这些东西打包在某个地方,这真的很有帮助,在你的struct对齐等用途中要精确。
它是在版本6和OS X 10.8中添加到iOS SDK中的,但它只是一个C宏,并且没有添加任何您无法使用普通的typedef和enum完成的操作,因此无需担心向后兼容性问题。它的存在只是显式地将这两个东西联系在一起。
发布于 2013-10-05 08:30:19
你的方法会奏效的。但是,如果您希望使用menuItems作为变量或参数的类型,则需要执行以下类型定义:
typedef enum {add = 1,save,load,list,removeAll,remove,quit} menuItems;
menuItems m = add;
[myobj passItem:m];https://stackoverflow.com/questions/1662183
复制相似问题