在我的ObjC代码中,我调用的函数的参数类型为bool
(不是BOOL
)。
我应该从我的ObjC代码中将YES
传递给此参数,还是传递true
应该是正确的?
这个问题是关于惯例,而不是功能正确性。
答案 0 :(得分:2)
这实际上取决于您的构建设置。请参阅相关答案Objective-C : BOOL vs bool
BOOL
和bool
可以指同一类型,但有时候他们不会。
为安全起见,请始终使用正确的类型,即false
和true
bool
。
差异主要见于罕见的边缘情况,但如果出现,则很难找到。
出于同样的原因,我们在与C API交互时使用NULL
而不是nil
,即使它们通常只是0
的宏。他们的类型仍然不同。
答案 1 :(得分:2)
惯例,如果存在于任何正式意义上,将适用于bool
/ true
/ false
和BOOL
/ {{ 1}} / YES
。
至于功能正确性你是正确的,但是“设计一个表现出差异的例子”很难(但并非不可能[1])。 C中的布尔逻辑基于整数,“布尔”值运算符(NO
,>
,等)返回整数而不是任何布尔值。
HTH
[1]例如考虑使用&&
和不同的平台(macOS,iOS等),如果你想设想一些东西。