Если-еще не выполняется блок, когда bool имеет значение true?

С таким же успехом это может быть что-то глупое, что я пропустил, но взгляните на этот код: (который был сокращен до просто функциональности отладки, хотя фактическое имя метода было оставлено без изменений)

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

Когда я прохожу в НЕТ, это регистрирует:

 NO(inloop)
 NO

Очевидно, что когда я передаю ДА, он ДОЛЖЕН войти:

YES(inloop)
YES

У кого-нибудь есть идеи?

2 ответа

Решение

Измените свой код, чтобы просто проверить правду showItem переменная. BOOL тип на самом деле не ограничен значениями YES а также NO,

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

Вариант ответа Лакеша

-(BOOL)shouldHideStatusBarItem:(BOOL)showItem{

    if (showItem) {  

    } else {

    }

    NSBeep();

    NSLog(showItem ? @"YES" : @"NO" );
    return showItem;
}
Другие вопросы по тегам