2017-04-13 72 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); 
} 
相關問題