在以下string
为NSString
if (string.length < 1)
{
return;
}
且string
原来nil
if
语句仍会正确评估,因为在这种情况下nil
的评估结果为0
。
然而,这是推荐的做法(由Clang或Apple提出),是否存在任何反对此事的论据,并做了更接近的事情:
if (!string || string.length < 1)
{
return;
}
答案 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
。
当string
为nil
时,您最终会执行[nil length]
。在nil
指针上调用任何方法都会导致值为“零”。如何解释“零”取决于方法的返回类型。
原始类型显示为0. BOOL
显示为NO
。指针显示为nil
。
答案 1 :(得分:0)
我说没关系。您的备用线一眼就难以理解,并且依赖于与原始线相同的逻辑(nil == 0)。
答案 2 :(得分:-1)
在某些情况下,例如使用由请求响应生成的字符串,您应该检查字符串,是字符串,而不是数据!
NSString *string;
if ([string isKindOfClass:[NSString class]]) {
//
}
干杯!