Предупреждение при использовании объекта в качестве логического выражения в conditionals

Существует ли флаг clang для предупреждения при использовании, например, объекта в ifинструкции вместо логического выражения?

Я гуглил для этого, но не мог найти ничего. Это поможет предотвратить подобные ошибки, особенно при использовании классов основных данных, созданных редактором:

NSNumber *n = @(YES)

if (n) { // should be n.boolValue instead of n
    ...
}

Я нашел опцию «неявные логические преобразования» в Xcode, но это не так (я дважды проверил).

1 ответ

  1. Нет, для этого нет и быть не может.

    Есть.

    if происходит от классического C. В классическом C нет булевого типа. (Они расширили C в 99, но не коснулись if.) В основном все !=0 истинно, все = = 0 ложно.

    B.

    n нет объекта. Это ссылка на объект. Вам нужны выражения типа вы должны проверить, указывает ли объект наnil. С вашим предложением не было бы никакой разницы между» нет объекта «и»объект, содержащий нет».