在Objective-C中将nil与整数进行比较

时间:2014-01-31 18:35:51

标签: objective-c compare null

在以下stringNSString

的情况下
if (string.length < 1)
{
    return;
}

string原来nil if语句仍会正确评估,因为在这种情况下nil的评估结果为0

然而,这是推荐的做法(由Clang或Apple提出),是否存在任何反对此事的论据,并做了更接近的事情:

if (!string || string.length < 1)
{
    return;
}

3 个答案:

答案 0 :(得分:4)

这样做很常见:

if (string.length) {
    // string is not nil and the string has a non-zero length
} else {
    // either string is nil or the length is zero
}

在这种情况下,无需检查string是否为nil

stringnil时,您最终会执行[nil length]。在nil指针上调用任何方法都会导致值为“零”。如何解释“零”取决于方法的返回类型。

原始类型显示为0. BOOL显示为NO。指针显示为nil

答案 1 :(得分:0)

我说没关系。您的备用线一眼就难以理解,并且依赖于与原始线相同的逻辑(nil == 0)。

答案 2 :(得分:-1)

在某些情况下,例如使用由请求响应生成的字符串,您应该检查字符串,是字符串,而不是数据!

   NSString *string;
if ([string isKindOfClass:[NSString class]]) {
    //
} 

干杯!