objective-c - 在objective-c中YES/NO,TRUE/FALSE和true/

真的很简单的问题;这些值之间是否存在差异(BOOL 和 bool 之间是否存在差异)?一位同事提到他们在 Objective-C 中评估不同的东西,但是当我查看他们各自 .h 文件中的 typedef 时,YES/TRUE/true 都被定义为 1 和 NO/FALSE/false 都定义为 0。真的有区别吗?

最佳答案

我相信 boolBOOL 之间存在 区别,请查看此网页了解原因:
http://iosdevelopertips.com/objective-c/of-bool-and-yes.html

因为 BOOLunsigned char 而不是原始类型,所以 BOOL 类型的变量可以包含 YES 和 NO.

考虑这段代码:

BOOL b = 42;

if (b) {
    printf("b is not NO!\n");
}

if (b != YES) {
    printf("b is not YES!\n");
}

输出是:

b is not NO!
b is not YES!

对于大多数人来说,这是一个不必要的问题,但如果你真的想要一个 boolean 值,最好使用 bool。我应该补充一点:iOS SDK 通常在其接口(interface)定义上使用 BOOL,因此这是坚持使用 BOOL 的参数。

关于objective-c - 在objective-c中YES/NO,TRUE/FALSE和true/false之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/615702/

相关文章:

iphone - 在 UIViewController 上显示 clearColor UIViewC

objective-c - Objective-C 中的 "unrecognized selecto

objective-c - 每个核心数据关系都必须有一个逆关系吗?

objective-c - NSLog iPhone中Objective-C的方法名

objective-c - Xcode 5 : Code signing entitlement e

objective-c - 为什么要使用 ivar?

ios - 从 UITableView 单元格内的 url 异步加载图像 - 滚动时图像更改为错误图

iphone - 静态库中的 Objective-C 类别

objective-c - NSAttributedString 的 boundingRectWit

objective-c - 使用 Objective-C 在 iOS 9 中将状态栏文本颜色更改为浅