奇怪的Objective-C BOOL行为

时间:2014-10-14 20:49:59

标签: objective-c boolean

我有一个相当混乱的问题。当我创建一个本地BOOL变量时,它会忽略我分配给它的值。

例如:

BOOL myBoolean = NO;

根据调试器,这行代码导致myBoolean等于YES,如下所示: debugger screenshot (警告符号是关于未使用的变量。)

为什么会这样,我该怎么办?

我之后在我的代码中尝试将其设置为NO,但它仍保留在YES

我尝试在没有值的情况下对其进行初始化,即使我之后将其设置为NO,它仍然卡在YES。即使使用YES对其进行初始化,然后尝试将其设置为NO,也会将其保留为YES

我在这里完全失败了...非常感谢任何帮助和/或解释。提前谢谢!

2 个答案:

答案 0 :(得分:2)

由于您不使用myBoolean变量,因此允许编译器对其进行优化。在这种情况下,调试器可能会显示一个不正确的值(因为该变量实际上并未存储在任何地方),尽管通常它只是不显示变量(如果它不可访问)。

答案 1 :(得分:0)

我找到了答案:

似乎调试器没有正确显示BOOL的值。如果我打印变量,正如Noah在上面的评论中所建议的那样,它确实包含0

多么奇怪...我想知道为什么会发生这种情况,以及为什么Apple没有修复它,如果它确实是一个错误,而不是预期的行为。 (但我无法想象为什么会这样做。)