在Objective-C中使用enum?

13 浏览
0 Comments

在Objective-C中使用enum?

这是在Objective-C中使用枚举的正确(或有效)方式吗?即 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;
}

谢谢Gary

admin 更改状态以发布 2023年5月22日
0
0 Comments

在未来,提到NS_ENUM可能也很有帮助。你可以使用它,就像这样:

typedef NS_ENUM(uint16_t, TYEnummedType)
{
    TYEnummedType1,
    TYEnummedType2
};

。它几乎具有与普通enumtypedef相同的效果,但明确指定了整数类型。这对于将这些内容打包到其他地方、精确控制结构体对齐等非常有帮助。它在iOS SDK 6和OS X 10.8中添加,但它只是一个C宏,不会添加任何你不能使用原始typedefenum完成的内容,因此不需要担心向后兼容性。它只是显式地将这两个东西联系在一起而已。

0
0 Comments

如果你想给枚举一个语义化的意义,你可以考虑定义自定义类型并将变量“optionSelect”声明为该类型的变量!\n\n在代码中...\n

typedef enum menuItems {
       add = 1,
       save,
       load,
       list,
       removeAll,
       remove,
       quit} MenuItem;
MenuItem optionSelect;
scanf("%d", &optionSelect);
switch (optionSelect) {
    case add: 
    ...
    break;
    .
    .
    .
}

\n这意味着,几乎与你写的内容相同,但从开发者的角度来看,你为变量“optionSelect”赋予了特定的含义,而不仅仅是一个简单的int!

0