objective-c - Objective-C - 如何在同一参数中接收两个 int

标签 objective-c

我需要写一个这样的方法:

-(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/

相关文章:

iOS 应用未根据所选语言进行本地化

objective-c - 类与协议(protocol)之间有什么区别

iphone - 为什么 UIApplication 在我的 Mac 应用程序中不起作用

ios - Objective-C/Sprite 套件 : How do I access variables stored in UIViewController?

objective-c - 仅包含联系人 token 的 TITokenField

objective-c - 使用 NSFileHandle 读取/写入文件的示例

ios - 在 objective-c 中使用 [self.tableView deleteRowsAtIndexPaths withRowAnimation 从自定义按钮操作中删除 TableView 多行?

ios - UINavigationController:确定后退按钮是否被按下或 popViewController 动画

objective-c - 尝试编码 UIImage 并存储到 NSUserdefault 时,应用程序变慢

ios - Facebook 图 GET 请求