为什么Xcode 5.1仍假设为真?

Bre*_*nan 0 objective-c xcode5

当我按下大写字母时键入TRUE或FALSE,它仍然假设我想要小写为真或假.在使用Objective-C时,我相信我们应该使用大写版本,即使它们当前是等效的,但是Xcode不断将其更改为true或false的事实让我第二次猜测.

任何人都知道我们现在可以使用真假吗?

Tom*_*mmy 6

truefalse通过C99引入.true被定义为整数常量1,false并被定义为0每个规范的整数常量.

苹果公司TRUEFALSE它的相当的定义相同的距离早C99.

事情是可以互换的.

然而,相对于你的要求,在Objective-C的人通常使用的YESNO,而不是TRUEFALSE.

截至最近版本的Clang支持盒装表达式,其定义如下:

#define YES __objc_yes
#define NO  __objc_no
Run Code Online (Sandbox Code Playgroud)

编译器替换的(BOOL)1,(BOOL)0如果直接用作文字.使用盒装表达式时会出现差异.这个:

@YES
Run Code Online (Sandbox Code Playgroud)

......是一个[NSNumber numberWithBool:YES].除此之外,它还会通过身份(而不是值)与其他所有bool YES对象进行比较.这个:

@(true)
Run Code Online (Sandbox Code Playgroud)

......是一个[NSNumber numberWithInt:1].它会按价值进行比较,但不会按身份进行比较.