当我按下大写字母时输入TRUE或FALSE,它仍然假设我想要小写为true或false。在使用Objective-C时,我相信我们应该使用大写版本,即使它们当前是等效的,但是Xcode不断将其更改为true或false这一事实让我再次猜测。
任何人都知道我们现在可以使用真假吗?
答案 0 :(得分:6)
true
和false
。 true
被定义为整数常量1
,false
被定义为每个规范的整数常量0
。
在C99之前相当远的Apple TRUE
和FALSE
定义相同。
所以事情是可以互换的。
但是,与您的声明相反,在Objective-C中,人们通常使用YES
和NO
而不是TRUE
和FALSE
。
从支持盒装表达式的Clang的最新版本开始,这些被定义为:
#define YES __objc_yes
#define NO __objc_no
如果直接用作文字,编译器将替换(BOOL)1
和(BOOL)0
。使用盒装表达式时会出现差异。这样:
@YES
...是[NSNumber numberWithBool:YES]
。除此之外,它还将通过身份(而不是值)与每个其他bool YES
对象进行比较。这样:
@(true)
...是[NSNumber numberWithInt:1]
。它将按价值进行比较,而不是按身份进行比较。