如果在条件语句中将对象用作布尔表达式,则发出警告

时间:2016-05-06 10:08:38

标签: objective-c clang

当您使用例如警告时,是否有警告标志if语句中的对象而不是布尔表达式?

我用谷歌搜索但找不到任何东西。这有助于防止这样的错误,尤其是在使用编辑器生成的Core Data类时:

NSNumber *n = @(YES)

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

我在Xcode中找到了一个“隐式布尔转换”选项,但这似乎不是它(我仔细检查过)。

1 个答案:

答案 0 :(得分:0)

不,这没有短暂的行为,也不可能。

一个。

if来自经典C.在经典C中,没有布尔类型。 (他们在99中扩展了C,但没有触及if。)基本上所有东西!= 0都是真的,一切== 0都是假的。

n不是对象。这是一个对象参考。你需要像你必须检查的表达式,对象引用是否指向nil。根据您的建议,“无对象”和“包含NO的对象”之间没有区别。