2017-04-13 12 views
3

Logの機能を持つLogヘルパークラスを作成しました。すべてデバッグモードでうまくいきます。しかし、私がコードをリリースモードで実行するとクラッシュしてしまいます。以下のコードは次のとおりです。引数で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に

ビルド設定 - >最適化レベルを設定した場合

リリースモードの

はすべてスムーズに動作します。リリースモード

+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); 
} 
関連する問題