c - Objective-C : BOOL vs bool

我看到了“新类型”BOOL(YESNO)。

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

为了测试我做了:

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

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

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

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

最佳答案

根据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,因此如果 typedef 只改变使用 BOOL。

关于c - Objective-C : BOOL vs bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/541289/

相关文章:

objective-c - Xcode 5 中提供了哪些新的文档命令?

ios - UICollectionView 中的单元格间距

ios - 如何更改 UIButton 标题颜色?

objective-c - 在 Objective-C 中,Java 的 "instanceof"关

iphone - @try - Objective-C 中的 catch block

objective-c - 在 Objective-C 中转换为绝对值

ios - UITableViewCell 显示白色背景,在 iOS7 上无法修改

objective-c - 在 Objective-C 中将 NSArray 转换为 NSStrin

objective-c - 禁用某些文件的自动引用计数

ios - 如何对字符串进行 URL 编码