您的位置:首页 > 其它

BOOL与bool的区别

2016-01-31 07:25 295 查看
bool是c++上的,而BOOL时Obejctive-C的。

看源码定义:

/// Type to represent a boolean value.

#if (TARGET_OS_IPHONE && __LP64__) || TARGET_OS_WATCH

#define OBJC_BOOL_IS_BOOL 1

typedef
bool
BOOL;

#else

#define OBJC_BOOL_IS_CHAR 1

typedef
signed
char
BOOL;

// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"

// even if -funsigned-char is used.

#endif

#if __has_feature(objc_bool)

#define YES __objc_yes

#define NO __objc_no

#else

#define YES ((BOOL)1)

#define NO ((BOOL)0)
#endif

即在iOS64位或Apple Watch上,BOOL跟bool一样是一个整型,如果在Mac
OS X或iOS 32位则是一个char。

可以验证,运行以下代码,看输出

NSLog(@"YES:%ld",sizeof(YES));
//1

NSLog(@"true:%ld",sizeof(true));
//4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: