我有一个可以对作为枚举定义的Web服务进行调用的列表
typedef enum
{
ServiceCallGetDataA = 1 << 1;
ServiceCallGetDataB = 1 << 2;
ServiceCallGetDataC = 1 << 3;
ServiceCallGetDataD = 1 << 4;
..
} ServiceCall;
这是按位完成的,所以如果我打电话给我的服务经理,我可以说
[ServiceManager getDataFor:( ServiceCallGetDataB | ServiceCallGetDataC )];
然后,它给了我B&amp; B的两个数据。 C服务。这一切都很完美。
但我只能定义32个枚举,因为我正在开发的iOS平台是32位。
主要目标是保持OR操作不变,以便使用OR操作获取/设置枚举。
任何想法?
答案 0 :(得分:1)
您也可以尝试使用位向量而不是普通枚举。正如我发布this question时所建议的那样,您可以使用CFMutableBitVector来实现任意大小的位向量。
答案 1 :(得分:0)
如果你需要更大的整数,你可以使用long long
类型,即使在iOS上也应该转换成64位整数。
或者,您可以为每个服务使用具有常量字符串的NSSet
变量。然后你可以将它们组合起来,检查对象是否被包含等等。如果速度很关键,这可能不是选项,但如果不经常使用这些功能,你就会有更大的灵活性。