私はこのようなエラー処理コードしている:NSLogのバッファをどのようにフラッシュするのですか?
if (ERROR) {
NSLog(@"<some message>");
exit(-1);
}
のNSLogで記録されたメッセージは、必ず出口は()のNSLogのバッファをフラッシュすることなく処理を終了し、おそらくので、コンソールには表示されません。どのようにNSLogのバッファを自分でフラッシュできますか?
私はこのようなエラー処理コードしている:NSLogのバッファをどのようにフラッシュするのですか?
if (ERROR) {
NSLog(@"<some message>");
exit(-1);
}
のNSLogで記録されたメッセージは、必ず出口は()のNSLogのバッファをフラッシュすることなく処理を終了し、おそらくので、コンソールには表示されません。どのようにNSLogのバッファを自分でフラッシュできますか?
次のことを試してみてください。
if (ERROR) {
NSLog(@"<some message>");
fflush(stderr);
exit(-1);
}
しかしApple Human Interface Guidelinesは明らかにそれを言うので、あなたは、生産コードでexit
を使用しないでください:人々はこれを解釈する傾向があるので、
は、プログラム iOSアプリケーションを終了することはありませんクラッシュとしてただし、外部の状況によってアプリケーションが意図したとおりに機能しない場合は、状況をユーザーに伝え、ユーザーが状況について何ができるかを説明する必要があります。アプリケーションの誤動作の程度によっては、2つの選択肢があります。
はこのことを考えてみますが、どのようにについて
[someMessage writeToFile:@"/dev/stderr" atomically:NO
encoding:NSASCIIStringEncoding error:nil];
アトミックにNOの代わりにYESを送信しない限り、おそらく同じ問題が発生します。今でもテストすることはできません... – fbernardo
ただ、ブラインドの推測では、 'にfflush(stdoutが)'ちょうどあなたの前に 'exit'? – ayoy
NSLogがstderrにプリントすると思います... – fbernardo