我正在使用Xcode 5.0.2并看到bool的一些奇怪行为。 当我评估从方法返回的bool时,当我将鼠标悬停在它上面时,我认为它是假的。但是,它进入if语句的true分支。当我将代码更改为
时 if(validWord == false)
再次执行代码,它跳转到else分支。 (将值显示为false但解释为true)似乎正在评估bool值的相反值。
当我更改代码以测试validWord == false
时if(validWord == false)
再次执行代码,它跳转到else分支。 (评估为真)似乎正在评估bool值的反面。
有没有人遇到过这种行为?
此外: 即使我使用BOOL,同样的行为也很明显。
我添加了一些NSLOG条目来测试validWord的值;
返回1
NSLog(@"validWord: %i", validWord);
并为
返回YES NSLog(@"result is :%@",((validWord==YES)?@"YES":@"NO"));
当您将鼠标悬停在Xcode中的变量validWord上时显示NO值。 我会尝试madmik3的建议。
答案 0 :(得分:0)
你可能没有意识到这一点,但是bool和BOOL之间存在巨大差异。
BOOL是一个签名的字符。因此它可以具有-128到+127的值。如果将int转换为BOOL,则编译器只占用最后8位。
bool是由C语言定义的类型。它只能有值0和1.如果将int转换为bool,如果int为零,则编译器生成0 = false,如果int为非零,则生成1 = true。
检查从返回bool更改为BOOL后返回的方法。
答案 1 :(得分:0)
有同样的问题。使用Xcode 6.当试图从NSUserDefaults获得一些价值时。重新启动没有帮助。所以我找到了解决方法。 的解决方案强> 启动模拟器,然后只需重置内容和设置。