如果 - 当bool为真时没有执行块?

时间:2014-08-21 02:29:31

标签: objective-c if-statement boolean nslog

这可能很容易就是我错过了一些愚蠢的东西,但是请看一下这段代码:(虽然实际的方法名称没有改变,但它已被剥离,只是调试功能)

-(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

有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

更改您的代码,只检查showItem变量的真实性。 BOOL类型实际上不限于值YESNO

if (showItem)
{
    ...
}
else
{
    ...
}

答案 1 :(得分:0)

湖泊答案的变体

-(BOOL)shouldHideStatusBarItem:(BOOL)showItem{

    if (showItem) {  

    } else {

    }

    NSBeep();

    NSLog(showItem ? @"YES" : @"NO" );
    return showItem;
}