使用参数生成NSString时在释放模式下崩溃

时间:2017-04-13 13:10:40

标签: ios objective-c xcode8 ios10.3

我编写了Log helper类,它有几个Log函数。一切都在DEBUG模式下运行良好。但是,当我运行我的代码是释放模式时,它正在崩溃。以下是代码段:

+ (void)info:(NSString *)format, ...
{
    va_list args;
    va_start(args, format);
    va_end(args);

    NSString *formatedMessage = [[NSString alloc] initWithFormat:[NSString stringWithFormat:@"INFO %@",format] arguments:args];
}

虽然创建formatedMessage应用程序时遇到崩溃,但以下情况除外: Here is the callback of crash

如果我设置

  

构建设置 - >优化级别为NONE

在发布模式下一切顺利。有任何想法将优化级别修复为

  

最快的最小

处于发布模式

1 个答案:

答案 0 :(得分:1)

您似乎过早地致电va_end。尝试:

+ (void)info:(NSString *)format, ...
{
    va_list args;
    va_start(args, format);

    NSString *formatedMessage = [[NSString alloc] initWithFormat:[NSString stringWithFormat:@"INFO %@",format] arguments:args];

    va_end(args);
}