我收到了此分析器警告
消息表达式中的参数是未初始化的值
在下面代码第二行的第二个方括号下面有一个小橙色箭头
- (NSString *)base64EncodedString
{
size_t outputLength;
char *outputBuffer =
NewBase64Encode([self bytes], [self length], true, &outputLength);
NSString *result =
[[[NSString alloc]
initWithBytes:outputBuffer
length:outputLength
encoding:NSASCIIStringEncoding]
autorelease];
free(outputBuffer);
return result;
}
我不确定是什么导致这种情况我尝试了几件事,但从来没有我有过这种类型的分析仪警告。
如何摆脱此分析器警告?
答案 0 :(得分:5)
宣布
时size_t outputLength;
你没有初始化它。分析器不知道NewBase64Encode
将设置其值,因此它会警告您可能出现问题。
如果您绝对100%确定稍后将初始化该值,那么您可以安全地忽略分析器警告,但这种情况很少发生。例如,NewBase64Encode
可能会失败,outputLength
将导致未初始化,从而导致未定义的行为。
初始化您声明的每个变量始终是一个好习惯,因此在特定情况下只需执行
size_t outputLength = 0;
分析仪会很开心,您的代码更安全。
答案 1 :(得分:1)
警告说明了原因:
您使用过的一个参数未初始化。如果你明确地将outputBuffer,outputLength设置为某个默认值,警告就会消失。