我已经发现bool是C-Type而BOOL是Objective-C类型。 bool可以是true或false,BOOL可以是YES或NO
对于初学者来说,很难区分这些类型。如果我使用bool而不是BOOL,会发生什么不好的事吗?
答案 0 :(得分:5)
BOOL
是signed char
,而bool
是int
(实际上,它是typedef
dd在达尔文编译时C99标准)。从那里,可以遵循在整数类型之间推广/降级时的通常考虑因素。
答案 1 :(得分:4)
虽然你可能能够根据自己的需要使用bool而不是BOOL,但是你可能会遇到将'bool'传递给其他东西的问题(比如公共API方法) 。在编写Objective-C代码时,您应该坚持使用BOOL,主要是为了面向未来。
但是如果你这样做我认为什么都不会爆炸,这是非常不推荐的,并且不遵循任何Objective-C的惯例。
作为旁注,BOOL的YES或NO格式是一种建议,我养成了将BOOL设置为TRUE或FALSE(注意全部大写)的坏习惯,这没有问题。您也可以使用1或0。
这些都是有效的:
BOOL myBool;
myBool = YES; // true
myBool = TRUE; // true
myBool = 1; // true
myBool = NO; // false
myBool = FALSE; // false
myBool = 0; // false
答案 2 :(得分:0)
在常见情况下(将其设置为YES / 1或0 / NO),不太可能出现兼容性问题。
我建议您在其他情况下参考文档中的差异: http://developer.apple.com/documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html#//apple_ref/doc/c_ref/BOOL