Objective-C的:检查是否使用枚举选项

我有一个使用一个typedef枚举的自定义对象。 如果我设置了几个对我的对象枚举选项,我怎么能检查,看看是否那些正在使用?

typedef enum { Option1, Option2, Option3 } Options;

当创建我的对象我可能会使用:

myobject.options = Option1 | Option2;

我如何再后来检查哪些枚举选项都设置? 如:

if (myobject.options == Option1) { // Do something } if (myobject.options == Option2) { // Do something }

--------------解决方案-------------

如果你想为你的选择参数做按位逻辑,那么你应该定义你的枚举,使每个选项只有一个位设置:

typedef enum {
Option1 = 1, // 00000001
Option2 = 1 << 1, // 00000010
Option3 = 1 << 2 // 00000100
} Options;

然后,设置使用位或操作符的选项:

myObject.options = Option1 | Option2;

并检查该选项已被使用位AND运算符设置:

if(myObject.options & Option1) {
// Do something
}

你不应该使用一个枚举这一点,或至少不使用标准的编号。

#define Option1 1
#define Option2 2
#define Option3 4
#define Option4 8
#define Option5 16

该值必须是两个大国,这样你就可以将它们结合起来。 值为3意味着1 + 2被选择的选项。 你不会是能够作出这样的区分,如果3是其他选项之一有效值。

if ((myobject.options & Option1) == Option1)

我建议定义使用枚举NS_OPTIONS 。 这是苹果公司推荐的方法来创建这样枚举。

typedef NS_OPTIONS(NSUInteger, Options) {
Options1 = 1 << 0,
Options2 = 1 << 1,
Options3 = 1 << 2,
};

那么,作为已经说了,你做的分配值:

myObject.options = Option1 | Option2;

并检查它们:

if (myObject.options & Option1) {
// Do something
}

分类:iphone 时间:2015-03-15 人气:0
本文关键词: iphone,客观C,IOS
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.234 (s). 10 q(s)