我需要写一个这样的方法:
-(void)doStuff:(int)options;
基于像这样的 typedef 枚举:
typedef enum
{
FirstOption,
SecondOption,
ThirdOption
} MyOptions
为了能够以这种方式调用该方法(即调用具有多个“已启用”选项的方法),我需要做什么:
[self doStuff:(FirstOption | ThirdOption)];
我是否需要以不同方式设置 typedef enum
?以及我如何检查方法中收到的选项,一个简单的 if (options == ...)
?
最佳答案
你需要的是一个位数组。像这样定义您的选项:
enum MyOptions
{
FirstOption = 0x01, // first bit
SecondOption = 0x02, // second bit
ThirdOption = 0x04, // third bit
... = 0x08 ...
};
将您建议的选项与 |
结合起来,并使用 &
(options & SecondOption
) 对其进行测试。
- (void) doStuff: (MyOptions) options
{
if ( options & FirstOption )
{
// do something fancy
}
if ( options & SecondOption )
{
// do something awesome
}
if ( (options & SecondOption) && ( options & ThirdOption) )
{
// do something sublime
}
}
关于objective-c - Objective-C - 如何在同一参数中接收两个 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11671612/