iOS7上的BOOL vs. bool

时间:2015-05-29 18:06:34

标签: ios objective-c

在iOS中,我们遇到了BOOL与bool的问题。

我知道一个是位域,另一个是整数。

但是,以下代码在iOS7和iOS8上的行为有所不同:

self.nativationItem.rightBarButton = _editButton; //where editButton is a UIBarButtonItem.

_editButton.enabled = _some_NSArray.count;

因为count被定义为NSUInteger,我们期望它为0(false)或者对于任何其他值为> 0

然而,在iOS7上_some_NSArray.count> 0,editButton被禁用但在iOS8上启用了editButton!完全相同的代码。

另一件事是,如果我们将_some_NSArray.count转换为“bool”(不是大写字母),它可以同时适用于两者,但是如果我们将它转​​换为(BOOL)它可以在8但不是7上工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

enabledBOOLcountNSUInteger。正确的代码是:

_editButton.enabled = _some_NSArray.count > 0;

BOOL只应分配YESNO值(或条件表达式的等效结果)。

答案 1 :(得分:0)

BOOL

typedef signed char BOOL;

在objc.h中定义

布尔是

#define bool _Bool

从stdboo.h定义的宏,这与C语言中的bool相同