小编典典

Objective-C:BOOL vs bool

all

我看到了“新类型” BOOLYES, NO)。

我读到这种类型几乎就像一个字符。

为了测试我做了:

NSLog(@"Size of BOOL %d", sizeof(BOOL));
NSLog(@"Size of bool %d", sizeof(bool));

很高兴看到两个日志都显示“1”(有时在 C++ 中 bool 是一个 int 并且它的 sizeof 是 4)

所以我只是想知道 bool 类型是否有问题?

我可以只使用 bool (这似乎有效)而不会失去速度吗?


阅读 166

收藏
2022-07-06

共1个答案

小编典典

根据 中的定义objc.h

#if (TARGET_OS_IPHONE && __LP64__)  ||  TARGET_OS_WATCH
typedef bool BOOL;
#else
typedef signed char BOOL; 
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
// even if -funsigned-char is used.
#endif

#define YES ((BOOL)1)
#define NO  ((BOOL)0)

所以,是的,你可以假设 BOOL 是一个字符。您可以使用 (C99)bool类型,但 Apple 的所有 Objective-C 框架和大多数
Objective-C/Cocoa 代码都使用 BOOL,因此如果仅使用 BOOL 更改了 typedef,您将不会感到头疼。

2022-07-06