iOS Objective-C中true和YES之间的区别是什么

Kat*_*lon 0 objective-c ios

我已经读过这两个是相同的,但是如果我用true/false而不是代码,我的代码就不起作用了YES/NO.例如,如果我这样做

BOOL matchFound=false;
//...
//logic to change value of matchFound to `true` goes here
//...
if(!matchFound) NSLog(@"I did not find a match");
Run Code Online (Sandbox Code Playgroud)

以上不能正常工作.但如果我改为使用YES/NO,它就可以了.这是为什么?

mik*_*dev 6

这是因为YES/NO实际上不是布尔值,而是它们是有符号的char类型.这是旧C天的遗物,没有布尔类型.

下面链接的文章将详细解释,但一般情况下,在iOS中处理BOOL值时,应始终使用YES/NO.

http://iosdevelopertips.com/objective-c/of-bool-and-yes.html

希望这可以帮助!

  • ...需要注意的是,在64位运行时`BOOL`显然是C99的`bool`的typedef. (3认同)