gpt4 book ai didi

ios - 为什么非零数字无法将 BOOL 属性设置为 YES?

转载 作者:行者123 更新时间:2023-12-01 17:54:38 24 4
gpt4 key购买 nike

据我了解,在基于 C 的 Objective C 中,所有 BOOL 基本上都是短路(-127 到 128),零是“FALSE”或“NO”的唯一值。但是,当我最近尝试根据位掩码设置按钮的选定值时,它失败了。为什么?

NSInteger bitfield = 127;
NSInteger bitmask = 1 << 6; // 64

myButton.selected = bitfield & bitmask; // selected will remain NO

最佳答案

那是因为 BOOL不是 bool .
BOOL只是(非 bool )整数类型的非标准(Objective-C-specific)typedef(据我所知,它总是 signed char 但我可能错了)。因此,它确实 不是 表现为真正的 bool 数据类型,而是作为其基础整数类型。所以,如果你分配 64对它来说,它将存储 64 (而不是 true1 )。因此,一个操作可能总是假设 true值为 1(即 LSB 集)将无法识别 64。

相反,如果您替换了 BOOL具有真正的 C99 bool 类型,即 _Boolbool ,那么您将体验到预期的行为。即,分配 任何非零值到变量会让它存储true1 ,无论该值是否真的为 1。

关于ios - 为什么非零数字无法将 BOOL 属性设置为 YES?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20168637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com