iOS布尔状态应该使用什么值?
在iOS中,我似乎有许多适合布尔值的选项:iOS布尔状态应该使用什么值?,ios,boolean,Ios,Boolean,在iOS中,我似乎有许多适合布尔值的选项: YES NO TRUE FALSE true false 我应该用哪一种?在这个特殊的例子中,我隐藏了一个标签,所以我应该将hidden属性设置为YES,TRUE,或者TRUE?实际上YES,TRUE和TRUE之间没有区别,它们都表示1所表示的真实状态 而NO,false,false表示由0表示的错误状态 您还可以使用: BOOL aBool = 1; 这相当于BOOL aBool=true和BOOL aBool=TRUE和BOOL aBool=Y
YES
NO
TRUE
FALSE
true
false
我应该用哪一种?在这个特殊的例子中,我隐藏了一个标签,所以我应该将
hidden
属性设置为YES
,TRUE
,或者TRUE
?实际上YES
,TRUE
和TRUE
之间没有区别,它们都表示1所表示的真实状态
而NO
,false
,false
表示由0表示的错误状态
您还可以使用:
BOOL aBool = 1;
这相当于BOOL aBool=true代码>和BOOL aBool=TRUE代码>和BOOL aBool=YES代码>
但是:
将输出如下所示:
b is YES!
b is not YES!
这是因为当BOOL
类型的值不是1而是非零值时,直接与YES进行比较将失败
这是一个很好的例子。我与您分享您对这一点的看法,虽然它们目前的定义都是相同的,但当您发现这是真的时,移植代码是一件痛苦的事情!=对。(这正是为什么我们永远不应该测试X==1,因为有些语言使用-1,有些语言使用1)
我认为这可能是个人偏好,主要是关于未来的港口
我遵循TRUE和FALSE选项,这样移植到C/C++就更容易了
你可能会发现,如果你经常把代码转换成java,那么真的和假的更好,所以搜索和替换就更少了,但是我发现与可可更容易保持一致。
< P>简短的答案:你应该更喜欢<代码>是的< />代码>和<代码>没有<代码> >设置类型<代码> BooL< /C> >基础属性>
对于详细的答案,让我们首先看看这些常量是在哪里定义的:
true
和false
来自;它们是#将-d定义为1
和0
TRUE
和FALSE
来自CFBase.h
;它们是#将-d定义为1
和0
YES
和NO
来自NSObjCRuntime.h
。这就是signed char
是typedef
-ed为BOOL
,它的两个值是\define
-d为((BOOL)1)
和((BOOL)0)
或objc\u yes
/如果支持objc\u BOOL
基础类一致地使用<代码> BOOL ,它是<代码> TySufF用于<代码>签名CHAR> <代码>,以表示其布尔属性。由于前两对被转换为
int
常量,因此使用它们可能会导致警告,尽管它可能会正常工作。然而,YES
和NO
常量是以最兼容的方式为编译器定义的,无论其版本如何。因此,我建议在您的代码中始终使用YES
和NO
。我认为它们都可以。但就个人而言,我想使用是
/否
我找到了一个叫:
布尔值
这些宏定义方便的常量来表示布尔值
#定义是(BOOL)1
#定义否(BOOL)0
常数
是
将“是”定义为1。
iOS 2.0及更高版本提供。
在NSObjCRuntime.h中声明
否
将否定义为0。
iOS 2.0及更高版本提供。
在NSObjCRuntime.h中声明
在
中声明
objc.h
使用YES和NO与分别使用TRUE和FALSE或1和0相同
并使用NSLog查看结果,如以下小示例所示:
BOOL result;
result = YES;
NSLog(@"my boolean result is %@",result ? @"Yes" : @"No");
可能重复的
BOOL result;
result = YES;
NSLog(@"my boolean result is %@",result ? @"Yes" : @"No");