Objective-C:错误BOOL和布尔?

时间:2009-08-04 07:19:31

标签: objective-c

我已经发现bool是C-Type而BOOL是Objective-C类型。 bool可以是true或false,BOOL可以是YES或NO

对于初学者来说,很难区分这些类型。如果我使用bool而不是BOOL,会发生什么不好的事吗?

3 个答案:

答案 0 :(得分:5)

BOOLsigned char,而boolint(实际上,它是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