【发布时间】:2014-08-21 02:29:30
【问题描述】:
这很可能是我错过的一些愚蠢的事情,但请看一下这段代码:(它已被剥离为仅调试功能,尽管实际方法名称保持不变)
-(BOOL)shouldHideStatusBarItem:(BOOL)showItem{
if (showItem == YES) {
NSBeep();
NSLog(showItem ? @"YES(inloop)" : @"NO(inloop)" );
}
else if (showItem == NO){
NSBeep();
NSLog(showItem ? @"YES(inloop)" : @"NO(inloop)" );
}
NSLog(showItem ? @"YES" : @"NO" );
return showItem;
}
当我输入 YES 时,它会记录:
YES
当我输入 NO 时,它会记录:
NO(inloop)
NO
显然,当我输入 YES 时,它应该记录:
YES(inloop)
YES
有人有什么想法吗?
【问题讨论】:
-
你传递了哪个,YES 还是一个整数值给方法?我想你可能会传递一个不是 1 的整数值。
-
你确定你通过了
YES?BOOL只是signed char的 typedef,因此没有什么可以阻止您传递超出范围0, 1的值。不是0的所有内容都将被三元运算符视为真,但不会是== TRUE
标签: objective-c if-statement boolean nslog