2017-04-13 69 views
3

我已经写了具有几个Log函数的Log辅助类。在DEBUG模式下所有工作都很好。但是当我运行我的代码是释放模式时,它正在崩溃。下面的代码片段:在生成带参数的NSString的同时发布模式下崩溃

+ (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应用是越来越坠毁下面excecption: Here is the callback of crash

如果我设置

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

在发布模式下,所有的工作都很流畅。任何想法与优化级别固定到

最快,最小

在Release模式

+0

@rmaddy你真棒。 –

+0

但为什么我不明白为什么它使用旧版本的xcode <8.3 –

+0

这可能是一个内存优化。它曾经工作很幸运。这与在对象释放后使用对象指针类似。这样做只是在恰当的条件下工作。 – rmaddy

回答

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); 
} 
相关问题