Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS布尔状态应该使用什么值?_Ios_Boolean - Fatal编程技术网

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

在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=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");