枚举值作为Objective-C中的参数传递

时间:2013-10-25 06:47:45

标签: objective-c enums

我有一个枚举。

示例:

枚举事件

{

MOVE_UP = 0,
MOVE_DOWN,
MOVE_RIGHT,
MOVE_LEFT,

};

我想将特定的枚举值作为函数参数传递。例如:

我的方法定义是

  • (void)invokeEvents:(enum events)events withMessage:(NSDictionary *)message;

在调用此方法时,我传递的参数如下:

[self invokeEvents:MOVE_UP | MOVE_DOWN | MOVE_RIGHT withMessage:message;

检查接收参数事件时,

值始终是MOVE_UP | MOVE_DOWN | MOVE_RIGHT值列表的最后一个值。根据枚举值MOVE_RIGHT 2。

但我希望所有值如“MOVE_UP | MOVE_DOWN | MOVE_RIGHT”等于0,1和2。 如何传递参数以便我可以获得所有值。

请为我的问题提出建议。

提前致谢。

1 个答案:

答案 0 :(得分:2)

将您的枚举更改为:

{
MOVE_NONE = 0
MOVE_UP = 1<<0,
MOVE_DOWN = 1<<1,
MOVE_RIGHT = 1<<2,
MOVE_LEFT = 1<<3,
};

因此,您可以完全按照自己的意愿传递参数:MOVE_UP|MOVE_DOWN|MOVE_RIGHT

并在invokeEvents:withMessage:检查

if(events & MOVE_UP)
{
}
if(events & MOVE_DOWN)
{
}
...