我很想使用int
,并使0 == NO
,1 == YES
和其他任何内容== undefined。
显然有一百万种方法可以做这样的事情,但对你来说这似乎是最好的方式?我能想到的问题包括简单性和内存占用(例如,如果我有很多这些?)。
另一种方法是使用两个BOOL,一个用于isDefined
,另一个用于value
另一种方式,
typedef enum { CPStatusUndefined, CPStatusAvailable, CPStatusUnavailable } CPStatus;
编辑,用例是:
我有一个很难计算的是/否属性。在检查时,会经常检查(通过UIMenuController
,OFTEN),但除非用户选择它,否则永远不会检查它。我选择处理这个问题的方式是一个三型变量。第一次检查时,如果未定义,则计算是/否值并返回,之后返回yes / no值。
答案 0 :(得分:5)
使用枚举。在Objective-C中,它们就像在C / C ++中一样工作
typedef enum {
No = 0,
Yes,
Other
} tri_type;
tri_type myVar = No;
if( myVar == Yes || myVar == Other ) {
// whatever
}
答案 1 :(得分:1)
NSNumber
怎么样,因为它可以是nil
?
[number boolValue] == YES;
[number boolValue] == NO;
[number boolValue] == nil; // or just number == nil
答案 2 :(得分:0)
如果您想节省大量内存,请使用字符。
char == 0,false char == 1,是的 否则,未定义。
显然,你需要在-1之类的地方初始化它。
这是obj-c比较器返回值的方式: 如果为0,它们是相等的。 如果是肯定的,则a> b 如果是否定的,则< B'/ P>
与上述相同。