【问题标题】:Why is the Objective-C Boolean data type defined as a signed char?为什么将 Objective-C 布尔数据类型定义为有符号字符?
【发布时间】:2011-02-04 14:42:33
【问题描述】:

引起我兴趣的是 Objective-C 的 BOOL 类型定义。

为什么将它定义为signed char(如果为其分配长度大于 1 字节的值,可能会导致意外行为)而不是像 C 那样定义为int(错误余地要少得多:零值为假,非零值为真)?

我能想到的唯一原因是 Objective-C 设计者对存储进行了微优化,因为 char 将使用比 int 更少的内存。请问有大神能指点一下吗?

【问题讨论】:

  • 只是不要给它赋值YES和NO以外的任何东西,当你测试它时,只测试它是否设置。这就是指导方针,因此无论出于何种愚蠢的原因,他们选择的任何愚蠢的类型都应该没有问题;)

标签: c objective-c char boolean typedef


【解决方案1】:

请记住,Objective-C 是在 1980 年代创建的,当时节省字节真的很重要。

正如评论中提到的,只要您坚持 YES 和 NO 的值,一切都会好起来的。

【讨论】:

  • Kristopher 说得很好,由于最近对 iPhone/iPad 开发的关注度相对较高,很容易忘记 Objective-C 比目前正在实施的平台要老得多。跨度>
猜你喜欢
  • 2011-01-24
  • 2012-11-14
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多