我遇到XCode分析器正在标记有效代码的情况。
我们有一个带有方法isEmpty
的NSString类别,它检查字符串是否为空,包括检查nil字符串。当它与将字符串添加到数组结合使用时,分析器会抱怨:
if (![NSString isEmpty:myString]) {
[_myArray addObject:myString];
}
然后,分析师会向Array element cannot be nil
投诉,因为它不够聪明,无法检测isEmpty
是否阻止了这一点。
最好的解决方法是什么?我知道我可以将条件更改为if (myString && ![NSString isEmpty...
,但这似乎是一个笨重的解决方法。
编辑:根据要求,这里是isEmpty
:
+ (BOOL)isEmpty:(NSString *)string
{
return (string ? [string isEqualToString:@""] : YES);
}
答案 0 :(得分:1)
您必须确定必须向每个可能的逻辑路径显示分析仪。你的解决方法"非常好。
可能是你的isEmpty
可以用来帮助分析仪更多,但你没有表明,所以不可能说。根据您实际展示的内容,我建议您只使用您的"解决方法"并继续前进。
答案 1 :(得分:1)
在Objective-C中,检查non-nil
的{{1}}和non-empty
的最简单方法是获取NSString
。它为length
和nil
返回0,并为empty
返回正确的长度。
non-empty