我不断收到以下类型的代码中的 Clang 错误,但我不明白为什么它们会出错,也不知道如何解决它们以使 Clang 满意:
+ (NSString *)checkForLength: (NSString *)theString error: (NSError **)error {
BOOL hasLength = ([theString length] > 0);
if (hasLength) return theString;
else {
*error = [NSError errorWithDomain:@"ErrorDomain" code:hasLength userInfo:nil];
return nil;
}
}
抛开这个例子完全做作的本质(Clang 确实反对这一点,所以它足够说明问题),Clang 对错误分配行犹豫不决,并提出以下反对意见:
潜在的空取消引用。根据“创建和返回”中的编码标准NSError
对象的参数“error”可能为空。
我喜欢原始的 Clang 报告。我已阅读引用的文件,但看不到一种方法可以实现预期的效果;我检查了一些开源 Cocoa 库,这似乎是一个常见的习惯用法。有任何想法吗?
该文档中的清单 3-5 显示了执行预期操作的方法。用你的示例代码:
+ (NSString *)checkForLength: (NSString *)theString error: (NSError **)error {
BOOL hasLength = ([theString length] > 0);
if (hasLength) return theString;
else {
if (error != NULL) *error = [NSError errorWithDomain:@"ErrorDomain" code:hasLength userInfo:nil];
return nil;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)