【发布时间】:2012-06-22 22:23:56
【问题描述】:
我有一个关于按位枚举的问题,我似乎无法解决。我有许多由按位枚举表示的标志,如下例所示:
enum
{
EnumNone=0,
EnumOne = 1<<0,
EnumTwo = 1<<1,
EnumThree = 1<<2,
EnumFour = 1<<3
};
typedef NSUInteger MyEnum;
上面的例子一切都很好。根据我在 stackoverflow (this for example) 中的研究和各种有用的帖子,我得出的结论是,使用上面的示例,我基本上得到了 32 个选项(或者如果你愿意的话),每个选项代表 32 中的 1 位-bit系列选项,基本告诉我可以一路走到EnumThirtyTwo = 1 << 31。
我的问题是这样的:
假设我有超过 32 个(例如 75 个)标志来表示使用按位枚举。怎样才能最好地表现出来?
enum
{
EnumNone=0,
EnumOne = 1<<0,
EnumTwo = 1<<1,
EnumThree = 1<<2,
EnumFour = 1<<3,
...
...
EnumSeventyFive = 1<<75
};
typedef NSUInteger MyEnum;
将我的枚举类型的声明更改为:typedef long int MyEnum; 或typedef long MyEnum 是否很简单?
【问题讨论】:
-
如果您需要超过 64 个标志,那么您将度过一段糟糕的时光。
-
感谢@PaulR 您的意见。 +1 不让你回答:)。
标签: objective-c enums bit-manipulation